重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍Android中如何实现app启动优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联服务项目包括连云网站建设、连云网站制作、连云网页制作以及连云网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,连云网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到连云省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
App 启动方式
冷启动
App 没有启动过或 App 进程被杀,系统中不存在该 App 进程,此时启动即为冷启动。需要创建 App 进程,加载相关资源,启动 Main Thread,初始化首屏 Activity 等。在这个过程中,屏幕会显示一个空白的窗口(颜色基于主题),直至首屏 Activity 完全启动。
热启动
热启动意味着 App 进程只是处于后台,系统只是将其从后台带到前台展示给用户。类同与冷启动,在这个过程中,屏幕会显示一个空白的窗口(颜色基于主题),直至 activity 渲染完毕。
温启动
介于冷启动和热启动之间,一般来说在以下两种情况下发生:
用户返回退出了 App,然后又启动。进程可能还在运行,但是 activity 需要重建。
用户退出 App 后,系统可能由于内存原因将 App 杀死,进程和 activity 都需要重启,但是可以在 onCreate 中将被动杀死锁保存的状态(saved instance state)恢复。
启动时间检测
adb
adb shell am start -W
[应用报名]/[Activity的全路径名],得到三个时间值:
1、ThisTime
一般和 TotalTime 相同,如果应用启动开启了一个过渡用的全透明页面预处理一些事情,这样会比 TotalTime 小。
2、TotalTime
应用启动时间,包括创建进程、Application 初始化、Activity 初始化到显示。
3、WaitTime
一般比 TotalTime 大,包括系统的耗时。
代码打点
Application 的 attachBaseContext 在应用进程首先创建时调用,可做冷启动的开始打点。
优化
1、布局优化
2、逻辑优化
必要且耗时的逻辑,考虑单独开线程执行
必要不耗时,按优先级高低依次执行
非必要的延迟初始化,等用到再初始化
3、针对冷启动的欺骗效果
使用 placeholder UI
Android 最新的 Material Design 建议使用一个 placeholder UI 来展示给用户直至 App 加载完毕,类似 iOS 的做法。
自定义主题,设置 windowBackground 属性,给 Window 加上背景。
先加载一个不渲染布局的 Activity 作为启动屏
写一个什么都不做的 LogoSplashActivity
public class LogoSplashActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 这里并没有 setContentView,单纯只是用来跳转到相应的 Activity // 目的是减少首屏渲染 if (AppPref.isFirstRunning(this)) { IntroduceActivity.launch(this); } else { MainActivity.launch(this); } finish(); } }
在 AndroidManifest.xml 中设置其为启动屏,并加上主题
这样启动屏显示 LogoSplashActivity,本身不渲染布局,显示主题设置的 placehold UI 背景。
以上是“Android中如何实现app启动优化”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!