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優化
- Android APP 冷啟動流程AndroidAPP
- 如何實現 iOS App 的冷啟動優化iOSAPP優化
- Android效能優化筆記(一)——啟動優化Android優化筆記
- 關於雲函式冷啟動優化的思考函式優化
- 面試Tip:Android優化之APP啟動優化面試Android優化APP
- 熱備份/冷備份/ 冷啟動/熱啟動
- Android整合React Native啟動白屏問題優化AndroidReact Native優化
- iOS啟動優化iOS優化
- 愛奇藝Android客戶端啟動優化與分析Android客戶端優化
- 冷啟動演算法系列-雲音樂歌曲冷啟動初探演算法
- 基於Xamarin.Android的應用程式啟動效能優化Android優化
- App啟動速度優化APP優化
- 閒置計費 | 冷啟動與成本間的最優解
- iOS效能優化 - APP啟動時間優化iOS優化APP
- 閒置計費 | Serverless 冷啟動與成本間的最優解Server
- App啟動頁面優化APP優化
- APP啟動時間優化APP優化
- EntityFramework優化:第一次啟動優化Framework優化
- 基於APK加速啟動時間的Android系統資源優化APKAndroid優化
- IdleHandler,頁面啟動優化神器優化
- Linux啟動時間優化技巧Linux優化
- Android效能優化----卡頓優化Android優化
- 抖音推薦系統冷啟動
- Android效能優化Android優化
- Android Bitmap優化Android優化
- 冷啟動延時縮短50%-80%,阿里雲函式計算釋出冷啟動加速技術阿里函式
- 支付寶 App 構建優化解析:通過安裝包重排布優化 Android 端啟動效能APP優化Android
- Android效能優化——圖片優化(二)Android優化
- Android效能優化之佈局優化Android優化
- Android效能優化(1)—webview優化篇Android優化WebView
- Android 優化之路(一)佈局優化Android優化
- linux啟動時間優化措施(4)Linux優化
- Android效能優——佈局優化Android優化
- 推薦系統之冷啟動問題
- mtk相機冷啟動階段劃分
- 【冷啟動#1】實用的MySQL基礎MySql