众所周知,许多Android应用在首次Activity关注之前会非常简短地显示白屏.在以下情况中会出现此问题:
扩展全局Application类并在其中执行主要初始化的Android应用程序.的Application
对象总是第一之前创建Activity(可在调试程序观察的事实),所以这是有意义的.这是我案件延误的原因.
在启动画面之前显示默认预览窗口的Android应用程序.
设置android:windowDisablePreview = "true"显然在这里不起作用.我也不能Theme.Holo.NoActionBar像这里描述的那样将启动画面的父主题设置为,因为[不幸的是]我的启动画面使用了一个ActionBar.
同时,不扩展Application课程的应用程序在启动时不会显示白屏.
事实上,理想情况下,在Application对象中执行的初始化需要在显示第一个之前进行Activity.所以我的问题是,如何在不使用Application对象的情况下在应用启动时执行这些初始化?可能是使用了Thread或者Service,我想?
这是一个值得思考的有趣问题.我不能以通常的方式绕过它(通过设置NoActionBar主题),因为可悲的是我的Splash屏幕实际上ActionBar由于一些无关的原因.
注意:
我已经提到了以下问题:
参考文献:
主要问题是2-3秒后出现闪屏.在启动屏幕之前,会出现我不想要的空白布局.否则运行正常.只想删除在启动页面之前出现的空白布局.
主要活动:
public class MainActivity extends Activity {
private static String TAG = MainActivity.class.getName();
private static long SLEEP_TIME = 5; // Sleep for some time
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE); // Removes title bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // Removes notification bar
setContentView(R.layout.activity_main);
// Start timer and launch main activity
IntentLauncher launcher = new IntentLauncher();
launcher.start();
}
private class IntentLauncher extends Thread {
@Override
/**
* Sleep for some time and than start new activity.
*/
public void run() …Run Code Online (Sandbox Code Playgroud)