Ser*_*iro 7 java android splash-screen android-asynctask
我们都知道有很多关于如何在Android上进行启动画面的教程.但我们也知道这些都是伪闪屏.我搜索了很多,我总是看到Thread.sleep(x).这不是很好的编码,这只是为了使应用程序美观,看起来像一个专业的应用程序,这不是我想要的!
这些启动屏幕的另一个问题是它们无法解决我的问题,因为它们仅在活动开始后显示并显示内容视图.
我有一个应用程序在初始化时执行很多操作,当应用程序启动时,用户会看到黑屏几秒钟,有足够的时间来烦恼.所以这就是为什么我想要显示一个编码良好的启动画面,删除在设置内容视图之前出现的黑屏.
我试了一下.我将启动画面(a RelativeLayout)包含在设置的布局中MainActivity,但据我所知,Android只会在加载完所有内容后显示内容,所以如果我试图从内容视图中显示一些视图我有等到一切都结束了.不过,我会发送我的代码,它可以帮助某种方式......
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new SplashTask().execute();
}
private class SplashTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
initializeViews();
mSplashScreen.setVisibility(View.VISIBLE);
}
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void params) {
Standard.Initiate(MainActivity.this);
verifyListStats();
loadListAdapters();
setOnClickListeners();
mSplashScreen.setVisibility(View.GONE);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图加载一些资源,doInBackground(...)但因为我做了一些操作onResume()需要那些资源我不能这样做(或者至少我认为我做不到).
任何的想法?我听说过类似于iOS发布图像的内置机制,也许这可能是一种方式.
当一个活动启动时,Android会启动一个Zygote,一个不执行任何操作的空活动,并在其上设置您的活动主题,然后启动它.一旦您的活动准备好显示,它就会将显示的活动交换给您的活动.有关Zygote的更多信息,您可以阅读Cyril Motier 撰写的这篇文章
所以要回答你的问题,你可以这样做:
这样,在您的活动准备好显示之前,您的"启动画面"(即:具有您的启动主题的受精卵)将一直可见.