网站建设专业,企业网站建设总结报告,深圳双区建设,长春网站制作最专业1、布局性能检测
Systrace#xff0c;内存优化工具中也用到了 Systrace,这里关注 Systrace 中的 Frames 页面#xff0c;正常情况下圆点为绿色#xff0c;当出现黄色或者红色的圆点时#xff0c;表现出现了丢帧。
Layout Inspector#xff0c;是 AndroidStudio 自带工具…1、布局性能检测
Systrace内存优化工具中也用到了 Systrace,这里关注 Systrace 中的 Frames 页面正常情况下圆点为绿色当出现黄色或者红色的圆点时表现出现了丢帧。
Layout Inspector是 AndroidStudio 自带工具可以查看页面的视图层次结构。 2、帧率检测
1、Choreographer是 Android16 加入的一个工具类通过 Choreographer.getInstance().postFrameCallback可以实时获取 FPS。 VSYNC 信号回调监听当 VSYNC 信号返回时会执行 doFrame 回调函数。在 doFrame 方法中我们统计每秒内的执行次数以及记录当前帧的时间并注册一下次监听。
2、 adb shell dumpsys SurfaceFlinger | grep 包名启动页 不然他获取的数据是只有一行数据这个命令只需要执行一次 使用的是adb shell dumpsys SurfaceFlinger --latency SurfaceView 包名/启动页获取的目前只支持安卓6.0以上。 使用adb 命令时可以根据他的版本来进行拼接命令行 安卓7.0adb shell dumpsys SurfaceFlinger --latency SurfaceView 包名/启动页 安卓8.0--安卓10: adb shell dumpsys SurfaceFlinger --latency SurfaceView 包名/启动页#0 安卓12adb shell dumpsys SurfaceFlinger --latency SurfaceView 包名/启动页(BLAST)#0 adb shell dumpsys gfxinfo app的包名
3、CPU信息
1、读取/proc/cpuinfo 读取CPU的结构信息
2、cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 读取CPU工作频率
以上方法在Android 8以后会有限制
4、内存信息
ActivityManager activityManager (ActivityManager) base.getSystemService(Context.ACTIVITY_SERVICE);ActivityManager.MemoryInfo memoryInfo new ActivityManager.MemoryInfo();activityManager.getMemoryInfo(memoryInfo);Log.i(UtilsApplication,info.totalMem:memoryInfo.totalMem /(1024*1024));Log.i(UtilsApplication,info.availMem:memoryInfo.availMem/(1024*1024));Log.i(UtilsApplication,info.threshold:memoryInfo.threshold/(1024*1024));Log.i(UtilsApplication,info.lowMemory:memoryInfo.lowMemory);Log.i(UtilsApplication,getRuntime.totalMem:Runtime.getRuntime().totalMemory()/(1024*1024));Log.i(UtilsApplication,getRuntime.freeMemory:Runtime.getRuntime().freeMemory()/(1024*1024));Log.i(UtilsApplication,getRuntime.maxMemory:Runtime.getRuntime().maxMemory()/(1024*1024)); 5、电池信息
1、Battery Historian 工具查看电池情况
2、adb shell dumpsys batterystats --reset 查看电池
6、app_process原理
在 Android 系统中zygote 通过 fork()调用一个 app_process 进程作为 App 的载体我们同样也可以通过 app_process 运行一个普通的 java 程序这个 java 程序可以像 App 一样通过 binder 跨进程与 system_server 通信实现并调用一些 Android 系统服务的接口同时通过 app_process 启动的程序拥有 shell 等同的权限这样可以完成一些 app 无权限但是 adb 能够完成的命令