我们知道新打开一个应用的时候,会出现短暂的白屏或者黑屏,严重影响到我们的用户体验,其实这个过程是launcher启动新进程,进程中启动activity时,会先绑定window,然后使用默认的windowBackground导致的。
下面有三种解决办法:
1.主题切换法:
设置背景为透明:
1<style name="AppTheme.Launcher" parent="Theme.AppCompat.Light.NoActionBar"> 2 <item name="android:windowIsTranslucent">true</item> 3 </style>
或者直接修改为图片:
1<style name="AppTheme.Launcher" parent="Theme.AppCompat.Light.NoActionBar"> 2 <item name="android:windowBackground">@drawable/appstart_background</item> 3</style>
之后在清单文件中使用:
1 <activity 2 android:name=".MainActivity" 3 android:label="@string/app_name" 4 android:theme="@style/AppTheme.Launcher"> 5 <intent-filter> 6 <action android:name="android.intent.action.MAIN"/> 7 <category android:name="android.intent.category.LAUNCHER"/> 8 </intent-filter> 9</activity>
最后不要忘了在activity中再设置为自己的主题:
1public class MainActivity{ 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setTheme(R.style.SaoTheme); 6 setContentView(R.layout.activity_main); 7 } 8}
2.在application的oncreate中不要执行耗时操作,新进程启动会先执行application的oncreate。
3.mainActivity的嵌套布局少一点。