以下内容整理自互联网,仅用于个人学习
1. 减少onCreate时间
onCreate 方法中不要进行耗时操作,放在onResume里会更好。
- 把页面显示的View细分一下,放在AsyncTask里逐步显示,用handler更好。这样用户的看到的就是有层次有步骤的一个个的view的展示,不会是先看到一个黑屏,然后一下显示所有view。
- 最好做成动画,效果更自然。
- 利用多线程的目的就是尽可能的减少onCreate和onReume的时间,使得用户能尽快看到页面,操作页面。
但是,很多操作是只需要一次初始化的,都放在onResume里每次进入activity都会浪费初始化时间。可以用以下方式解决。
- 定义一个boolean变量
- 在onCreate里标记为true
- 在onResume里判断为true就进行初始化,初始化完成立刻置为false。
2. 减少主线程的阻塞时间
首先了解ANR,ANR就是应用无响应。
- 用户操作无响应5秒
- 网络和数据库阻塞10秒
- 广播接收者执行超过10秒会导致ANR
ANR出现的原因:
- 高耗时的操作
- 磁盘读写,数据库读写
- 大量创建新对象
若一个操作耗时过长(导致ANR),我们应该将其放入后台线程中执行,只在需要修改UI界面时通知主线程进行修改。
3. 提高Adapter和AdapterView的效率
- 重用已生成过的Item View(convertView)
- 添加ViewHolder
- 缓存Item的数据
- 分段显示
4. 优化布局文件
- 使用观察布局的工具 Hierarchy Viewer
- 使用布局优化工具: Layoutopt
- 优化布局的层次结构,使用include、merge、ViewStub等