APP的优化是任重而道远的过程,必须在意每一个环节,否者当你想要优化的时候,发现到处都是坑,已经不知道填补哪里了,所以我们必须一点一滴的做起。

卡顿

大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。Android系统每隔大概16.6ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。

原因

有很多原因可以导致丢帧, 一般主线程过多的UI绘制、大量的IO操作或是大量的计算操作占用CPU,都会导致App

丢帧

如果某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现象。那么用户在32ms内看到的会是同一帧画面。

原因

有很多原因可以导致丢帧, 一般主线程过多的UI绘制、大量的IO操作或是大量的计算操作占用CPU,都会导致App

Trace API

Androidstudio的Profiler也提供了Trace的使用你可以自己选择某一段区域,也可以代码生成Trace文件,然后拖动到Androidstudio内打开查看。提供的2种方式比较灵活。

Looper日志检测卡顿

Android主线程更新UI。如果界面1秒钟刷新少于60次,即FPS小于60,用户就会产生卡顿感觉。简单来说,Android使用消息机制进行UI更新,UI线程有个Looper,在其loop方法中会不断取出message,调用其绑定的Handler在UI线程执行。如果在handler的dispatchMesaage方法里有耗时操作,就会发生卡顿。

只要检测 msg.target.dispatchMessage(msg) 的执行时间,就能检测到部分UI线程是否有耗时的操作。注意到这行执行代码的前后,有两个logging.println函数,如果设置了logging,会分别打印出>>>>> Dispatching to和<<<<< Finished to 这样的日志,这样我们就可以通过两次log的时间差值,来计算dispatchMessage的执行时间,从而设置阈值判断是否发生了卡顿。

android 系统卡顿分析,Android-卡顿分析相关推荐

  1. Android系统电池管理(PowerManagerService)框架分析及其在实体设备和虚拟设备上的差异(一)

    0 前言 移动设备的电池一直是影响移动设备用户体验的关键问题之一,电池容量.充电速度.以及系统待机时长都在用户考虑范围内. 在众多嵌入式设备系统中,Android系统的设计的主要目的就是为了通过触摸屏 ...

  2. Android 系统(261)---SIM卡不识或者掉卡简单分析

    SIM卡不识或者掉卡简单分析 1. 识卡大体过程 2.不识卡问题 不识卡的主要原因:  ①Modem发生错误,异常或者重启.  ②没有收到卡回的ATR  ③有收到卡回的ATR,但是后面跟卡通信出现异常 ...

  3. Android 系统(94)---android系统属性(ro.com.google.clientidbase.ms)随卡适配

    android系统属性(ro.com.google.clientidbase.ms)随卡适配 客户要求 客户提了一个小需求,就是要将系统属性(ro.com.google.clientidbase.ms ...

  4. Android 系统(126)---Android的死机、重启问题分析方法

    Android的死机.重启问题分析方法 阅读数:11986 Android的死机.重启问题分析方法 1.     死机现象 1.1      死机定义 当手机长时间无法再被用户控制操作时,我们称为死机 ...

  5. Android 系统(74)--Android重启原因分析

    Android重启原因分析 重启原因分类 1.上层造成重启 system_server被杀 watchdog重启 重要线程阻塞 2.kernel造成重启 空指针 非法地址 3.kernel watch ...

  6. Android 系统(55)---Android App开发之ANR异常的原因分析及处理总结

    Android App开发之ANR异常的原因分析及处理总结 Android App开发之ANR异常的原因分析及处理总结 ANR的全称是application not responding,根据它的意思 ...

  7. Android系统的心脏-Zygote进程启动流程分析

    简介: Android中,Zygote是整个Android系统的核心进程,是Android系统的心脏.所有的Android应用程序,包括Android框架层所在的进程system_server,都是由 ...

  8. Android系统的Ashmem匿名共享内存子系统分析(4)- Ashmem子系统的 Java访问接口

    声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法,记得2019年6.7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾- ...

  9. android系统profile文件路径,Android Profile Tools 入门

    本次分享会目的 通过对增加对 Android Profile Tools 的了解,提高大家工作过程中定位和解决Bug的效率. 注意事项 为了不耽误大家时间,语速可能会快一些 如果讲到某个工具或者技巧, ...

  10. Android 系统(226)---Android 阿拉伯语适配

    Android 阿拉伯语适配 RTL 语言由来 RTL 是 Right-to-left(从右向左) 的缩写.其意为人们书写阅读习惯是从右向左,朝左继续的,常见的 RTL 语言有阿拉伯语,希伯来语等. ...

最新文章

  1. GNN 系列(三):GraphSAGE
  2. bzoj1089 [SCOI2003]严格n元树(dp+高精)
  3. 2010 February
  4. [Python人工智能] 二十三.基于机器学习和TFIDF的情感分类(含详细的NLP数据清洗)
  5. 2019年3月前端面试题
  6. 【PAT - 甲级1003】Emergency (25分)(Dijkstra,最短路条数,双权值最短路)
  7. Java Formatter toString()方法与示例
  8. js中的总结汇总(以后的都收集到这篇)
  9. 静态路由实现负载均衡和高可用
  10. 计算机电子电路技术 电路与模拟电子部分,[高等教育]计算机电子电路技术--电路与模拟电子部分直流电源.ppt...
  11. HpSocket HttpEasyServer 二次封装
  12. 【前端知识之JS】reduce()方法与使用
  13. 经纬度转WGS84坐标
  14. 从赤壁之战看刘备与曹操暴露的最大差距
  15. error日志的用法
  16. python中的platform模块获取平台信息
  17. [附源码]Java计算机毕业设计SSM动物园动物饲养管理
  18. 关于CentOS7搭建ELK集群遇到的问题及解决办法
  19. 2015浙江计算机一级试题,2015年计算机一级考试试题及答案
  20. HALCON数组的删除 三

热门文章

  1. fopen()和fwrite()函数介绍及用法
  2. 统计机器翻译(SMT)步骤总结
  3. 部队档案管理系统-RFID档案管理系统
  4. muduo-sockfd-acceptor
  5. 关于Http请求头header中的Content-type问题
  6. 涉及async、awit的浏览器事件循环
  7. 醉酒驾驶机动车的刑罚标准是怎么规定的
  8. python面试充电(3)面向对象、装饰器、包与模块
  9. 想要顺利拿下订单,外贸人的价格谈判思维你GET了吗?
  10. 为什么有些数学专业的看不惯甚至鄙视深度学习的?