启动优化2
2019-12-09 本文已影响0人
couriravant
逻辑异步:
有没有任务可以放在子线程
逻辑延迟:
什么是逻辑延迟?就是将一些优先级不是非常高的代码和逻辑延迟执行,不堵塞生命周期的方法。一般的方案可以是使用Handler延迟代码执行,但是这个方案是有缺陷的,有可能会影响用户操作卡顿。比如代码延迟1000ms执行,但是如果这个时候用户正好在滑动手机操作,再加上延迟的任务比较复杂,这时用户操作任务和延迟执行任务就会同时执行抢占cpu,然后一部分性能不好的手机就会有卡顿现象。解决方案是什么?
IdleHandler:当Handler空闲的时候才会被调用名,如果返回true,则会一直执行,如果返回false,执行完一次后就会被移除消息队列。比如,我们可以将从服务器获取推送Token的任务放在延迟Handler中执行。
(IdleHandler:IdleHandler即在looper里面的message处理完了的时候去调用,这不就是我们onResume调用完了以后的时机么)
闪屏页优化:
<activity
android:name=".ui.splash.SplashActivity"
android:screenOrientation="portrait"
android:theme="@style/SplashScreenTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<style name="SplashScreenTheme" parent="AppTheme.White">
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/bg_splash</item>
</style>