欢迎访问[Android日记][1],如有转载请注明Android日记 http://androiddiary.site
2017.3.12 周日 晴 北京

写日记

记录读书笔记

卡顿

    Android应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现。卡顿的场景有很多,按场景可以分成4类:UI绘制、应用启动、页面跳转、事件响应。在这四种场景下又有多个小分类,基本上覆盖了卡顿的各个场景。

  • UI:绘制、刷新
  • 启动:安装启动、冷启动、热气的
  • 跳转:页面切换、前后台切换
  • 响应:按键、系统事件、滑动

    这4种卡顿场景的根本原因又可以分成两大类。

  • 界面绘制:主要原因是绘制的层级深、页面复杂、刷新不合理,由于这些原因导致卡顿的场景更多出现在UI和启动后的初始界面以及跳转到页面的绘制上。
  • 数据处理:导致这种卡顿场景的原因是数据处理量太大,一般分为三种情况,一是数据处理在UI线程(这种应该避免),二是数据处理占用CPU高,导致主线程拿不到时间片,三是内存增加导致GC频繁,从而引起卡顿。
    引起卡顿的原因有很多,但不管怎么样的原因和场景,最终都是通过设备屏幕上的显示来到达用户,归根到底就是显示有问题,所以,要解决卡顿,就要先了解Android系统的显示原理。

显示原理

    Android的显示过程可以简单概括为:Android应用程序发起绘制任务经过测量、布局、绘制后的surface缓存数据,通过SurfaceFlinger把数据渲染到显示屏幕上,通过Android的刷新机制来刷新数据。也就是说应用层负责绘制,系统层负责渲染,通过进程间通信把应用层需要绘制的数据传递到系统层服务,系统层中的SurfaceFlinger服务通过刷新机制把数据更新到屏幕。
    Android的图形显示系统采用的是Client/Server架构。SurfaceFlinger(Server)由C++代码编写。Client端代码分为两部分,一部分是由Java提供给应用使用的API,另一部分则是由C++写成的底层具体实现。

更多相关文章

  1. Android系统数据传递机制
  2. android按键静音键功能实现
  3. Android增加键值(二)
  4. 给android添加系统属性:Settings.system和SystemProperties
  5. eclipse导入android缺失android.jar包解决(吐血奉献的)
  6. android 模拟器root
  7. Android(安卓)系统(248)---解读Android进程优先级ADJ算法
  8. android 图形系统加速学习系列 (一)
  9. Android(安卓)Logcat输出为何能自动换行输出的原因以及多\n的作

随机推荐

  1. Android(安卓)访问权限许可大全
  2. pull解析xml(android)
  3. Android支持横行滚动的ListView控件
  4. Android(安卓)中文字符转UTF-8编码
  5. android - mvp实现商品详情页面【仿】京
  6. Android(安卓)InputMethodManager 导致的
  7. Android(安卓)LOG机制流程图
  8. android图片异步加载 列表
  9. Android之2D图形(圆、直线、点)工具类 (持
  10. Android(安卓)SharedPreferences使用