android页面卡顿

安卓手机应用中界面切换卡顿和滑动卡顿的区别是什么,请从专业角度解释?或者给出一个开发者需要注意事项?

作者:匿名用户
链接:http://www.zhihu.com/question/29408352/answer/44287351
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

于是直接贴我的答案……
不过需要注意的是,我举的例子并不是完备的。
而且答题时间有限,而我打字有点慢..所以如果有错也别打我OAQ
另外…本答案基本基于 Google 的 Android开发指导。

在Android 中卡顿是因为 在UI线程上,进行了一次超过16ms(1s/60fps)的操作,例如写入了大量文件等,导致GPU绘图时无法拉取更新的图像数据。

界面切换卡顿:

原因1:由于layout的层级过深,导致findviewbyid操作耗时过长。

解决方案1:使用 Hierarchy Viewer 工具,找出Layout 的性能瓶颈。

原因2:部分信息,例如 进度条等 可以在需要时载入。

解决方案2:使用 ViewStub 便可做到这一点

原因3:在onCreate() onstart()与onResume()方法中,进行了过多操作。

解决方案3:将耗时操作放在后台线程当中完成。

原因4:部分操作必须进行后,才能继续更新页面

解决方案4:应该放在后台线程中处理,在UI上显示进度条。

屏幕滑动卡顿:

原因1:在UI线程上进行了大量耗时操作,例如 大量运算、执行磁盘读写、网络读写或是 SQL 操作。

解决方案1:使用后台线程来进行这些操作,UI线程应当专注UI绘画。

原因2:滑动时可能经常调用 findViewById() ,这会消耗较多CPU资源。

解决方案2:使用 View Holder 来优化滑动性能。

原因3:绘制了被覆盖的视图。

解决方案3:可以使用开发者工具下的 ”显示过重绘“ 功能检查视图是否存在过重绘问题,并优化layout,减少过重绘的部分。
编辑于 2015-04-10 19 条评论 感谢
收藏 • 没有帮助 • 举报 • 作者保留权利
2
知乎用户
补充:A切换到B发生了什么?A onPause -> B onCreate -> B onStart -> B onResume -> A onStop界面切换卡的原因请从上面前三个函数中找问题,问题的可能性是很多的,布局inflate过慢、加载本地数据过慢、耗时计算什么的,都有可能;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值