Android App應用啟動分析與優化
前言:
昨晚新版本終於釋出了,但是還是記得有測試反饋app啟動好長時間也沒進入app主頁,所以今天準備加個班總結一下App啟動那些事!
app的啟動方式:
1.)冷啟動
當啟動應用時,後臺沒有該應用的程式,這時系統會重新建立一個新的程式分配給該應用,這個啟動方式就是冷啟動。冷啟動因為系統會重新建立一個新的程式分配給它,所以會先建立和初始化Application類,再建立和初始化MainActivity類(包括一系列的測量、佈局、繪製),最後顯示在介面上。
2.)熱啟動
當啟動應用時,後臺已有該應用的程式(例:按back鍵、home鍵,應用雖然會退出,但是該應用的程式是依然會保留在後臺,可進入任務列表檢視),所以在已有程式的情況下,這種啟動會從已有的程式中來啟動應用,這個方式叫熱啟動。熱啟動因為會從已有的程式中來啟動,所以熱啟動就不會走Application這步了,而是直接走MainActivity(包括一系列的測量、佈局、繪製),所以熱啟動的過程只需要建立和初始化一個MainActivity就行了,而不必建立和初始化Application,因為一個應用從新程式的建立到程式的銷燬,Application只會初始化一次。
app的啟動流程:
通過上面的兩種啟動方式可以看出app啟動流程為:
Application的構造器方法——>attachBaseContext()——>onCreate()——>Activity的構造方法——>onCreate()——>配置主題中背景等屬性——>onStart()——>onResume()——>測量佈局繪製顯示在介面上
app的啟動優化:
基於上面的啟動流程我們儘量做到如下幾點
Application
的建立過程中儘量少的進行耗時操作- 如果用到
SharePreference
,儘量在非同步執行緒中操作 - 減少佈局的層次,並且生命週期回撥的方法中儘量減少耗時的操作
app啟動遇見黑屏或者白屏問題
1.)產生原因
其實顯示黑屏或者白屏實屬正常,這是因為還沒載入到佈局檔案,就已經顯示了window視窗背景,黑屏白屏就是window視窗背景。
示例:
2.)解決辦法
通過設定設定Style
(1)設定背景圖Theme
通過設定一張背景圖。 當程式啟動時,首先顯示這張背景圖,避免出現黑屏
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:screenOrientation">portrait</item> <item name="android:windowBackground">>@mipmap/splash</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> </style>
(2)設定透明Theme
通過把樣式設定為透明,程式啟動後不會黑屏而是整個透明瞭,等到介面初始化完才一次性顯示出來
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> <item name="android:screenOrientation">portrait</item> </style>
兩者對比:
- Theme1 程式啟動快,介面先顯示背景圖,然後再重新整理其他介面控制元件。給人重新整理不同步感覺。
- Theme2 給人程式啟動慢感覺,介面一次性刷出來,重新整理同步。
(3)修改AndroidManifest.xml
<application android:name=".App" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true"> <activity android:name=".MainActivity" android:theme="@style/AppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> //...... </application>
解決後示例:
3.)常見的Theme主題
android:theme="@android:style/Theme.Dialog" //Activity顯示為對話方塊模式 android:theme="@android:style/Theme.NoTitleBar" //不顯示應用程式標題欄 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" //不顯示應用程式標題欄,並全屏 android:theme="Theme.Light " //背景為白色 android:theme="Theme.Light.NoTitleBar" //白色背景並無標題欄 android:theme="Theme.Light.NoTitleBar.Fullscreen" //白色背景,無標題欄,全屏 android:theme="Theme.Black" //背景黑色 android:theme="Theme.Black.NoTitleBar" //黑色背景並無標題欄 android:theme="Theme.Black.NoTitleBar.Fullscreen" //黑色背景,無標題欄,全屏 android:theme="Theme.Wallpaper" //用系統桌面為應用程式背景 android:theme="Theme.Wallpaper.NoTitleBar" //用系統桌面為應用程式背景,且無標題欄 android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" //用系統桌面為應用程式背景,無標題欄,全屏 android:theme="Theme.Translucent" //透明背景 android:theme="Theme.Translucent.NoTitleBar" //透明背景並無標題 android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景並無標題,全屏 android:theme="Theme.Panel " //皮膚風格顯示 android:theme="Theme.Light.Panel" //平板風格顯示
幹我們這行,啥時候懈怠,就意味著長進的停止,長進的停止就意味著被淘汰,只能往前衝,直到鳳凰涅槃的一天!
相關文章
- Android效能優化之App應用啟動分析與優化Android優化APP
- Android應用優化之冷啟動優化Android優化
- 面試Tip:Android優化之APP啟動優化面試Android優化APP
- 愛奇藝Android客戶端啟動優化與分析Android客戶端優化
- Android效能優化之加快應用啟動速度Android優化
- iOS作業系統-- App啟動流程分析與優化iOS作業系統APP優化
- Android應用啟動流程分析Android
- App啟動優化APP優化
- Android App應用啟動流程(一)AndroidAPP
- Android進階 - 應用啟動分析Android
- Android 7.0 應用啟動流程分析Android
- App啟動速度優化APP優化
- Android 效能優化 ---- 啟動優化Android優化
- Android應用啟動黑白屏解決方案及啟動時間優化Android優化
- 基於Xamarin.Android的應用程式啟動效能優化Android優化
- APP啟動時間優化APP優化
- App啟動頁面優化APP優化
- 分析並優化 Android 應用記憶體佔用優化Android記憶體
- android冷啟動優化Android優化
- iOS效能優化 - APP啟動時間優化iOS優化APP
- App Annie :應用商店優化 (ASO) – 優化應用商店頁面APP優化
- Android App 優化之效能分析工具AndroidAPP優化
- Android應用啟動優化:一種DelayLoad的實現和原理Android優化
- 優化 App 的啟動時間優化APP
- Android應用優化方案Android優化
- Android應用程式啟動過程原始碼分析Android原始碼
- Android效能優化筆記(一)——啟動優化Android優化筆記
- Android App 優化之提升你的 App 啟動速度之理論基礎AndroidAPP優化
- [譯]Android Application 啟動流程分析AndroidAPP
- Android 應用啟動那些事兒,Application? Context?AndroidAPPContext
- Android應用啟動優化:一種DelayLoad的實現和原理(下篇)Android優化
- Android應用啟動優化:一種DelayLoad的實現和原理(上篇)Android優化
- Android 應用啟動流程Android
- Android App 優化之提升你的 App 啟動速度之例項挑戰AndroidAPP優化
- 高德APP啟動耗時剖析與優化實踐(iOS篇)APP優化iOS
- Native APP(原生應用)、Web App(Web應用)、Hybrid App(混合應用) 優缺點分析APPWeb
- 移動應用效能優化優化
- Android效能最佳化之加快應用啟動速度Android