文章來源:http://wuxiaolong.me/2017/03/13/appStart/
如果應用進程被殺死化撕,從桌面點擊應用圖標啟動app譬正,一般首先會出現(xiàn)一個白屏或者黑屏,三五秒后才會進入主頁面
造成的原因:
- Application的onCreate流程中做了大量的通用組件的初始化操作盛撑。
- 在主Activity的onCreate對于UI的布局與渲染不能過于發(fā)咋碎节,如果布局過于復雜會導致移動很慢,應該盡量減少布局的冗余或嵌套撵彻。
解決方案:
我們可以直接去掉這個白屏頁面
定義一個style:
<style name="AppTheme.Launcher">
<!--關閉啟動窗口-->
<item name="android:windowDisablePreview">true</item>
</style>
然后在啟動頁面引用這個主題:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.Launcher">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
最后在MainActivity中恢復正常主題:
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.AppTheme);
setContentView(R.layout.activity_main);
}
}
這樣啟動APP钓株,就沒有白屏实牡,但會出現(xiàn)點擊桌面圖標而半天沒有反應的現(xiàn)象,顯然不好轴合,很多APP把這個閃屏當做一個廣告创坞、品牌宣傳的頁面。
實現(xiàn)方式一:
實現(xiàn)短暫的品牌曝光
<style name="AppTheme.Launcher">
<item name="android:windowBackground">@drawable/branded_launch_screens</item>
</style>
drawable/branded_launch_screens
<?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/black" />
<!-- 產(chǎn)品logo-->
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/empty_image01" />
</item>
<!-- 右上角的圖標元素 -->
<item>
<bitmap
android:gravity="top|right"
android:src="@mipmap/github" />
</item>
<!--最下面的文字-->
<item android:bottom="50dp">
<bitmap
android:gravity="bottom"
android:src="@mipmap/ic_launcher" />
</item>
</layer-list>
其中android:opacity=”opaque”參數(shù)是為了防止在啟動的時候出現(xiàn)背景的閃爍