作家
登录

用两张图告诉你,为什么你的App会卡顿?

作者: 来源: 2017-06-01 08:56:06 阅读 我要评论

UI线程被壅塞

如不雅UI线程受到壅塞,显而易见的是,我们的Traversal过程也将受壅塞!画面卡顿是妥妥的产生啊。这就是为什么大年夜家一向在强调不要在UI线程做耗时操作的原因。平日UI线程的壅塞和以下原因脱不了关系。

在UI线程中进行IO读写数据的操作。这是一个很费时的过程好吗?切切别这么干。如不雅不想获得一个卡到爆的App的话,把IO操作一切放到子线程中去。

在UI线程中进行复杂的运算操作。运算本身是一个耗时的操作,当然简单的运算几乎刹时完成,所以不会让你感触感染到它在耗时。然则对于十分复杂的运算,对时光的消费是十分辣眼睛的!如不雅不想获得一个卡到爆的App的话,把复杂的运算操作放到子线程中去。

在UI线程中进行复杂的数据处理。我说的是比如数据的加密、解密、编码等等。这些操作都须要进行复杂运算,特别是在数据比较复杂的时刻。如不雅不想获得一个卡到爆的App的话,把复杂数据的处理工作放到子线程中去。

频繁的产生GC,导致UI线程被频繁中断。在Java中,产生GC(垃圾收受接收)意味着Stop-The-World,就是说其它线程全部会被暂停啊。好恐怖!正常的GC导致有时的画面卡顿是可以接收的,然则频繁产生就让人很蛋疼了!频繁GC的祸首祸首是内存颤抖,这个时刻就须要看下我的┞封篇【Android内存基本——内存颤抖http://www.jianshu.com/p/69e6f894c698】文┞仿了。简单的说就是在短时光内频繁的创建大年夜量对象,导致达到GC的阀值,然后GC就产生了。如不雅不想获得一个卡到爆的App的话,把内存的治理做好,即使这是Java。

有意壅塞UI线程。好吧,信赖没人会这么干吧。比如sleep()一下?

总结

我一向在不按期的创作新的干货,想要上车只需进到我的小我主页点个存眷就好了哦。发车喽~

整篇下来,信赖童鞋对Android的绘制机制也有了一个比较周全的懂得。如今回过火来再写代码时是不是有种知根知底的自负呢?😄

FrameHandler并不复杂,但在UI的绘制过程中具有重要的感化,所以必定要结合图梳理下这个流程。

参考链接

  1. Implementing VSYNC:https://source.android.com/devices/graphics/implement-vsync
  2. SurfaceFlinger and Hardware Composer:https://source.android.com/devices/graphics/arch-sf-hwc
  3. Surface and SurfaceHolder:https://source.android.com/devices/graphics/arch-sh
  4. Implementing the Hardware Composer HAL:https://source.android.com/devices/graphics/implement-hwc
  5. 可能是史上最简单的!一张图3分钟让你明白Activity启动流程,不看懊悔!http://www.jianshu.com/p/9ecea420eb52
  6. 惊天机密!大年夜Thread开端,揭穿Android线程通信的诡计和主线程的诡计http://www.jianshu.com/p/8862bd2b6a29
  7. 震动!这个控件绝对值得收藏。轻松实现圆角、文字描边、状况指导等效不雅http://www.jianshu.com/p/cfe18cbc6924
  8. Android内存基本——内存颤抖http://www.jianshu.com/p/69e6f894c698
  9. Android机能优化之衬着篇http://hukai.me/android-performance-render/
  10. Android硬件加快道理与实现简介http://tech.meituan.com/hardware-accelerate.html
  11. Android SurfaceFlinger对VSync旌旗灯号的处理过程分析http://blog.csdn.net/yangwen123/article/details/17001405
  12. Android Vsync 道理http://www.10tiao.com/html/431/201601/401709603/1.html
  13. Android Choreographer 源码分析http://www.jianshu.com/p/996bca12eb1d?utm_campaign=hugo&utm_medium=reader_share&utm_content=note
  14. Android应用法度榜样窗口(Activity)的视图对象(View)的创建过程分析:http://blog.csdn.net/luoshengyang/article/details/8245546
  15. Android 4.4(KitKat)中VSync旌旗灯号的虚拟化http://blog.csdn.net/jinzhuojun/article/details/17293325
  16. Understanding necessity of Android VSYNC signals:http://stackoverflow.com/questions/27947848/understanding-necessity-of-android-vsync-signals 

  推荐阅读

  换个角度看看,为什么钓鱼攻击总能成功?

当我第一次收到银行发来的“安然”邮件时,我第一反竽暌功就是这里是否有诈?因为在我看来,它实袈溱是太像垂纶邮件了。这封躺在收件箱里的邮件来源竽暌冠我银行经理的小我邮箱地>>>详细阅读


本文标题:用两张图告诉你,为什么你的App会卡顿?

地址:http://www.17bianji.com/lsqh/35508.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)