Android項目實戰(四十二):啟動頁最佳化,去除短暫白屏或黑屏

來源:互聯網
上載者:User

標籤:enable   代碼   size   home   ons   oid   name   category   友盟統計   

原文:Android項目實戰(四十二):啟動頁最佳化,去除短暫白屏或黑屏

  大家會發現一個空項目,從手機案頭開啟app是秒啟動。但是對於自己開發的項目,有時會發現開啟app的時候,會有短暫的1秒--2秒的白屏或者黑屏,然後才進入到程式介面。

  個人理解為我們自己實現的Application檔案裡面做了較多的初始化操作,當這些初始化操作完成後才進入到第一個Activity,這段初始化的時間因為沒有介面,應用便會因為主題的類別而顯示白屏或者黑屏。

  

  構成白屏/黑屏的原因代碼如下:


/**
* @author xqx
* @email [email protected]
* blog:http://www.cnblogs.com/xqxacm/
* createAt 2017/1/30
* description: 進行第三方的初始化等操作
*/
public class XApplication extends Application{    @Override    public void onCreate() {        super.onCreate();//         環信初始化//        EaseUI.getInstance().init(this,null);//        EMClient.getInstance().setDebugMode(true);        // 友盟統計 普通統計情境類型        MobclickAgent.setScenarioType(this, MobclickAgent.EScenarioType. E_UM_NORMAL);        //禁止預設的頁面統計方式,這樣將不會再自動統計Activity。        MobclickAgent.openActivityDurationTrack(false) ;        //日誌加密        MobclickAgent.enableEncrypt(true);//6.0.0版本及以後        //錯誤記錄檔統計        MobclickAgent.setCatchUncaughtExceptions(true);        // 頁面訪問路徑統計        MobclickAgent.openActivityDurationTrack(true);        // 極光        JPushInterface.setDebugMode(true);        JPushInterface.init(this);
    
     /....各種三方初始化 }

 

  解決方案,給應用的第一個Activity單獨設定一個不同的主題,一般第一個Activity即為啟動頁。

  我們只要在res/values/styles.xml 檔案中寫一個主題繼承自我們應用的主題

  

    <!-- Base application theme. -->    <!-- 應用的主題. -->    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">        <!-- Customize your theme here. -->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>    </style>    <!--啟動頁Activity主題,解決開啟時1-2秒的白屏問題 , 繼承自應用的主題 , 只需要給應用第一個Activity設定此主題即可,一般為啟動頁-->    <style name="MyGuideTheme" parent="AppTheme">        <!-- Customize your theme here. -->        <item name="android:windowIsTranslucent">true</item>        <item name="android:windowNoTitle">true</item>    </style>

  

  然後在AndroidManifest.xml檔案中,給啟動頁設定這個主題即可。

  

    <activity            android:name=".ui.moduleLogin.GuideActivity"            android:configChanges="orientation|keyboardHidden|screenSize"            android:screenOrientation="portrait"            android:theme="@style/MyGuideTheme"   // 這個Activity單獨設定主題            >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>

  

  注意:1、這個解決方案會有一個bug,在小部位機型上設定了該主題的Activity,如果使用者進入到最近列表(長按home鍵或者按菜單鍵)會出現閃爍問題。

        所以我們不能將整個應用的主題都設定為這個,只需要啟動頁設定,因為啟動頁只有少數的1-2秒即進入主介面,使用者進入最近列表的觸發可能性極低,體驗較好。

        2、如果Application中初始化的東西很多,時間較長,比如超過2秒,此方法不適用,會導致使用者點擊icon2秒後才開啟app,使用者體驗不佳。

 

Android項目實戰(四十二):啟動頁最佳化,去除短暫白屏或黑屏

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.