Android优化之加载优化

空扰寡人 提交于 2019-11-29 23:28:12

加载优化

1.懒加载优化

  • 该优化在新闻类app中十分常见

ViewPager+Fragment的搭配在日常开发中也比较常见,可用于切换展示不同类别的页面。

懒加载,其实也就是延迟加载,就是等到该页面的UI展示给用户时,再加载该页面的数据(从网络、数据库等),而不是依靠ViewPager预加载机制提前加载两三个,甚至更多页面的数据。这样可以提高所属Activity的初始化速度,也可以为用户节省流量.而这种懒加载的方式也已经/正在被诸多APP所采用。

  • 具体看这篇文章

www.jianshu.com/p/cf1f4104d…

2. 启动页优化

  • 启动时间分析

系统创建进程的时间和应用进程启动的时间,前者是由系统自行完成的,一般都会很快,我们也干预不了,我觉得能做的就是去优化应用进程启动,具体说来就是从发Application的onCreate()执行开始到MainActivity的onCreate()执行结束这一段时间。

  • 启动时间优化

Application的onCreate()方法
MainActivity的onCreate()方法
优化的手段也无非三种,如下所示:

a.延迟初始化
b.后台任务
c.启动界面预加载

  • 启动页白屏优化

为什么存在这个问题?

a.当系统启动一个APP时,zygote进程会首先创建一个新的进程去运行这个APP,但是进程的创建是需要时间的,在创建完成之前,界面是呈现假死状态,于是系统根据你的manifest文件设置的主题颜色的不同来展示一个白屏或者黑屏。而这个黑(白)屏正式的称呼应该是PreviewWindow,即预览窗口。
b.实际上就是是activity默认的主题中的android:windowBackground为白色或者黑色导致的。
c.总结来说启动顺序就是:app启动——Preview Window(也称为预览窗口)——启动页

解决办法:

a.常见有三种,这里解决办法是给当前启动页添加一个有背景的style样式,然后SplashActivity引用当前theme主题,注意在该页面将window的背景图设置为空!
b.更多关于启动页为什么白屏闪屏,以及不同解决办法

  • 启动时间优化

IntentService子线程分担部分初始化工作

a.现在application初始化内容有:阿里云推送初始化,腾讯bugly初始化,im初始化,神策初始化,内存泄漏工具初始化,头条适配方案初始化,阿里云热修复……等等。将部分逻辑放到IntentService中处理,可以缩短很多时间。

b.开启IntentSerVice线程,将部分逻辑和耗时的初始化操作放到这里处理,可以减少application初始化时间

c.关于IntentService使用和源码分析,性能分析等可以参考博客:IntentService源码分析

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!