android冷啟動優化
android冷啟動優化
1. 什麼是冷啟動
冷啟動指的是應用第一次啟動或者應用被殺死(不在記憶體中)後重新啟動的情況。
你可能已經發現了,這種情況下啟動時間會稍長一點。因為它會重新初始化資源(Application等)。
app啟動時通常會在Application或者所謂的SplashActivity中做初始化工作。如果Application中的工作過多的話, 那麼當冷啟動的時候,就會出現白屏
情況,因為此時SplashActivity
還沒有被初始化,SplashActivity
上的圖片還沒有被顯示出來。
我們當然不希望出現白屏
的情況。
解決方案應該從兩方面考慮,1是優化Application
的初始化邏輯,比如該非同步的非同步,該延遲的延遲。2是將白屏
換成SplashActivity
中展示的圖片,讓使用者有一種應用已經啟動了的錯覺,本文講的就是這種優化方案。
2. 如何優化
我們需要為SplashActivity
設定一個Theme
,如下:
styles.xml
<style name="AppTheme.Launcher">
<item name="android:windowBackground">@drawable/launch_screen</item>
<item name="android:windowFullscreen">true</item>
</style>
這個Theme
繼承了app的基礎主題AppTheme
,同時複寫了windowBackground
屬性,它的值即SplashActivity
將展示的圖片(logo等等…)。
launch_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@android:color/white"/>
<!-- Your product logo - 144dp color version of your app icon -->
<item>
<bitmap
android:src="@drawable/splash_defalut"
android:gravity="fill"/>
</item>
</layer-list>
然後將這個主題設定到SplashActivity
上:
<activity
android:name=".ui.activity.SplashActivity"
android:configChanges="fontScale"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Launcher"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這還沒有完,因為我們為SplashActivity
多設定了一個背景圖,必然會導致過渡繪製,所以我們在其初始化前,將主題設定回原來的:
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_activity);
以上。
現在你會發現即使啟動時間再長,也不會出現白屏
。
參考:
相關文章
- Android應用優化之冷啟動優化Android優化
- Android效能優化之啟動過程(冷啟動和熱啟動)Android優化
- Android 效能優化 ---- 啟動優化Android優化
- 如何實現 iOS App 的冷啟動優化iOSAPP優化
- Android APP 冷啟動流程AndroidAPP
- 關於雲函式冷啟動優化的思考函式優化
- Android效能優化筆記(一)——啟動優化Android優化筆記
- 面試Tip:Android優化之APP啟動優化面試Android優化APP
- Android效能優化之App應用啟動分析與優化Android優化APP
- Android效能優化(一)之啟動加速35%Android優化
- Android App應用啟動分析與優化AndroidAPP優化
- iOS啟動優化iOS優化
- App啟動優化APP優化
- 愛奇藝Android客戶端啟動優化與分析Android客戶端優化
- Android效能優化之加快應用啟動速度Android優化
- 冷啟動演算法系列-雲音樂歌曲冷啟動初探演算法
- App啟動速度優化APP優化
- Android整合React Native啟動白屏問題優化AndroidReact Native優化
- Android應用啟動黑白屏解決方案及啟動時間優化Android優化
- iOS效能優化 - APP啟動時間優化iOS優化APP
- APP啟動時間優化APP優化
- App啟動頁面優化APP優化
- 美人相機啟動優化優化
- 閒置計費 | Serverless 冷啟動與成本間的最優解Server
- EntityFramework優化:第一次啟動優化Framework優化
- 抖音推薦系統冷啟動
- 基於Xamarin.Android的應用程式啟動效能優化Android優化
- 如何優化 Android Studio 啟動、編譯和執行速度?優化Android編譯
- 優化 App 的啟動時間優化APP
- Linux啟動時間優化技巧Linux優化
- IdleHandler,頁面啟動優化神器優化
- 基於APK加速啟動時間的Android系統資源優化APKAndroid優化
- Android App 優化之提升你的 App 啟動速度之理論基礎AndroidAPP優化
- Android應用啟動優化:一種DelayLoad的實現和原理Android優化
- 冷啟動延時縮短50%-80%,阿里雲函式計算釋出冷啟動加速技術阿里函式
- 推薦系統之冷啟動問題
- mtk相機冷啟動階段劃分
- Android效能優化----卡頓優化Android優化