Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android冷啟動優化

android冷啟動優化

編輯:關於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);

以上。

現在你會發現即使啟動時間再長,也不會出現白屏

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved