1、application的优化
尽可能的将第三方库的初始化工作,和一些业务代码延迟到后面初始化,比如ImageLoder的初始化,我们可以换成单例模式,在需要使用的时候初始化。
将一些业务代码,放到单独的线程中优化。这些都市基于不影响业务的情况下的调优。
2、启动页的优化
1.1.解决黑白屏问题
在启动MainActivity前,加载一个SpashActivity。然后加上全屏主题,这个有两种方式。一种是在主题中设置。另外一种是代码中设置
<style name="SplashTheme" parent="AppTheme">
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
</style>
第二种方式是代码设置
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
1.2.在这个SpashAcivity中可以提前做一些事情
目前很多app是用来做AD的加载。
同时在后台我们可以对我们的view进行提前的加载。可以使用Fragment或者其他的可以方式都可以。
同时我们还可以丢一些线程做一些资源的预加载,等真正的MainAcitivty起来的时候就可以直接使用。
3、View的优化
View 优化其实是需要很多精力的,除了使用viewstub做延迟加载,我们要牢牢记住一个核心观念,就是你写的xml文件无论是层级负载也好还是不复杂也好,你需要用你的经验让你整个layout在绘制的时候尽量一遍绘制完成。
比如使用 Ralectivtylayout androidx的ConstraintLayout,就让系统在绘制view 的时候从上到下基本上扫描一遍就完成了各个子view的定位。而LinearLayout就是写的时候方便,但是系统在绘制的时候,由于你的层级过多,它要反复的确认你的view 的位置导致耗时。