首先,启动优化我要知道app启动大概经历那几个步骤;
APP启动分为几个步骤?
1,Application的启动
2,SpalshActivity;闪屏页?
3,首页MainActivity;
第一步:Application的启动,属于进程的启动;
1,我们知道多个进程很可能多次启动;
所以,我们要避免applicationId以外的进程执行不必要的执行代码;(就是判断是否在主进程,其他进程做自己相关的事情;)
很多第三方的库会加入自己的进程初始化;
2,初始化任务分级分类型;耗时的,必要非必要的,可延时的任务; 丢入子线程或者主线程或延时加载;
2的补充,并且在每段任务初始化方法加入耗时日志监控;
application 有几个入口? 1,桌面图标
2,点击通知栏
3,deeplink。scheme
4,快捷方法;
第二步: 加入SpalshActivity;1,过渡一下,体验优化;
2,统一入口启动的路径是直线的,而不是网状的;
什么时候结束SpalshActivity; onStop时;
因为SpalshActivity 启动MainActivity;
SpalshActivity 的onPause方法会在优先MainActivity的onCreate执行; 为什么这么设计,安全第一原则,很可能启动失败;onPause是用来保存数据的;
SpalshActivity 的onStop 方法 会 在MainActivity的onResume 之后, 为什么这么设计,体验优先原则;
这样就会在MainActivity完全显示之后 才关闭SpalshActivity;
第三步:MainActivity的优化,
大多数APP 首页会用viewpager+fragment; 这个时候如何采用懒加载的方法 实现 预加载的功能呢?
经验所得; fragmentAdapter;AndroidX; 在onResume的时候才加载数据;viewModel 判断数据是否为null来觉得加载数据还是更新数据;
每次viewpager滑动的时候会有加载圈;如何优化呢?
可以在viewpager滑动那个滑动监听, 提前调用数据加载; 它的滑动事件优化fragment的事件onResme 200ms;
网友评论