Fil*_*zzi 3 java android thread-sleep
我正在为应用程序制作SplashScreen ...当应用程序启动时,它启动LoadingActivity ...睡眠3秒,完成(); 然后启动MainActivity.Splash用于更新数据库.如果数据库已经更新,我仍然希望启动仍然持续3秒.
我使用以下代码:
protected void onPostExecute(Void result) {
super.onPostExecute(result);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
Intent intent = new Intent(LoadingActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个糟糕的实践吗?为什么?该应用程序正在AVD中运行.
睡在UI线程上总是一个坏主意.在这种情况下,您位于onPostExecute
UI线程中.
把你的睡眠转移到你的doInBackground
方法,你AsyncTask
不会得到任何ANR(Android没有响应).
用户不喜欢等待启动画面,所以最好不要等待.但有时需要启动画面(即由于合同).
是的,这是不好的做法,onPostExecute()
在UI线程上调用,所以基本上你是阻止你的UI线程3整秒.我怀疑你想要一个闪屏.你可以这样做.
new Handler().postDelayed(new Runnable(){
@Override
public void run(){
Intent intent = new Intent(LoadingActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
},3000);
Run Code Online (Sandbox Code Playgroud)
或者,如果你想坚持AsyncTask
然后覆盖doInBackground()
在它睡觉,并启动您Activity
的onPostExecute()
正常进行.
归档时间: |
|
查看次数: |
2882 次 |
最近记录: |