您好我想使用异步任务在启动画面上添加延迟,但我无法弄清楚应该怎么做。到目前为止,这是我的DoInBackground代码:
@Override
protected Integer doInBackground(String... params) {
Thread SplashThread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while(running && (waited < delayTime)) {
sleep(100);
if(running) {
waited += 100;
}
}
} catch(InterruptedException e) {
// do nothing
} finally {
finish();
stop();
}
}
};
SplashThread.start();
return null;
}
我认为返回null的部分是导致问题的主要原因,因为它结束了我的异步任务,即使我的SplashThread仍然在后台运行,在这些部分之后留下泄漏导致错误。我也尝试使用counDownTimer作为替代,但这导致同样的问题。有什么方法可以做到这一点吗?
答案 0 :(得分:2)
您不需要在doInBackground
的{{1}}方法中启动的其他主题。 AsyncTask
本身在另一个线程中运行AsyncTask
方法,
因为doInBackground
循环,它很可能是不必要的。在while
方法中完成您想要完成的工作,然后返回。如果您需要/需要一些额外的延迟(尽管您应该不惜一切代价避免这种情况),您可以使用doInBackground
方法在返回之前暂停线程。