標籤: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項目實戰(四十二):啟動頁最佳化,去除短暫白屏或黑屏