android

标签: android

Android性能优化总结

持续更新ing 性能优化主要几个方面 流畅性优化 内存优化 CPU 优化 稳定性优化 安装包优化 流畅性 人眼和大脑之间的协作能感受到的最大帧率就是每秒 60 Fps 画面更新,那么要求每一帧的绘制时间就是 1000/60 = 16.67ms,所以Android系统要求每一帧尽可能在 16ms 内绘制完成 怎么看帧率? adb shell dumpsys gfxinfo "com.baidu.hi.debug" // 或者 开发者模式 > GUP 呈现模式分析 > 屏幕上显示条形图 屏幕下方的柱状图每一根代表一帧,其高度表示“渲染这一帧耗时”, 绿线代表16ms标准。每一帧的渲染过程拆分成了8个步骤: 1) Swap Buffers:表示处理任务的时间,也可以说是CPU等待GPU完成任务的时间,线条越高,表示GPU做的事情越多; 2)

阅读全文...

Android - Kotlin 实践

语法糖 不用写分号 println("hello world") 更强大的字符串操作 (""") val js = """ function myFunction() { document.getElementById("demo").innerHTML="My First JavaScript Function"; } """.trimIndent() 等号 val john1 = Person("John") val john2 = Person("John") john1 == john2 // true (structural equality) john1 === john2 // false (referential equality) 变量 // 定义可变变量 var name: String = "hello world" // 定义不可变变量,相当于 Java ->

阅读全文...

那些不常用的adb命令

显示当前activity adb shell dumpsys window w | grep \/ | grep name= | cut -d = -f 3 | cut -d \) -f 1 打开应用详情 adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:com.baidu.hi 清空应用信息 shell pm clear com.baidu.hi 多语言选择 adb shell am start -a android.settings.LOCALE_SETTINGS

阅读全文...

targetSdkVersion < 22 下权限适配

android 在 6.0 (android M) 引入动态权限,应用在安装时不会授予危险权限(危险权限列表),应用在运行的时候动态申请,用户确认后才可以拿到权限。 这一套在targetSdkVersion >= 23 的情况下没有任何问题,23以下呢?应用安装的时候默认授予所有权限,但是不(keng)幸(die) 的是 在运行6.0及以上的手机上用户可以主动关闭权限,而且应用还拿不到任何通知。 华为手机取消时界面如下: 下面总结了下不同版本权限的影响: targetSdkVersion/手机系统 不小于6.0 小于 6.0 小于23 安装时默认授予权限,用户可以取消权限(取消时手机会弹出提醒"取消可能导致无法运行"),app不能动态申请 安装时默认授予权限,且用户不能取消 不小于23 安装默认不授予权限,需要app动态申请权限, 或者用户主动设置 安装时默认授予权限,且用户不能取消 现在的问题是targetsdkversion <= 22

阅读全文...

Android事件分发机制解读

Activity 事件处理 public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); } if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); } 如果Window设置了监听则由Window处理,不然由自己的onTouchEvent事件处理, Window的实现类是PhoneWindow, PhoneWindow的superDispatchTouchEvent实现如下: public boolean superDispatchTouchEvent(MotionEvent event) { return mDecor.superDispatchTouchEvent(event); } 交给了DecorView实现,这样就转交给ViewGroup 来处理事件了。 ViewGroup事件分发 主要涉及以下三个函数 dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent(), 调用关系如下: public boolean dispatchTouchEvent(MotionEvent ev)

阅读全文...

Android 和 Java 知识体系总结

8大排序算法 https://segmentfault.com/a/1190000011395732 https://juejin.im/post/5a08cc646fb9a045030f9174?utmsource=goldbrowser_extension JDK 和 JRE区别 JRE: Java Runtime Environment JDK:Java Development Kit JRE 顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。JRE根据不同操作系统(如:windows,linux等)和不同JRE提供商(IBM,

阅读全文...