【发布时间】:2014-04-30 05:19:28
【问题描述】:
所以我遇到了一个奇怪的问题,我找不到解释。我有一个异步任务,在它的 doBackground 方法中会等待,直到设置了某个变量,然后通知“等待”
private class TestAsyncTask extends AsyncTask<Void, Object, Boolean> {
@Override
protected void onPreExecute() {
Log.d("Test1");
}
@Override
protected Boolean doInBackground(Void... params) {
Log.d("Test2");
while (nextCardToPlay == null) {
wait();
}
Log.d("Test3");
}
}
活动 A:
protected void onCreate(){
a = new TestAsyncTask().execute();
}
protected void onPause(){
a.cancel()
}
正如您所见,活动启动时,asyncTask 已启动。当活动关闭时,asyncTask 应该被取消。
我注意到,如果我打开活动,关闭它,然后再次重新打开它,则会创建异步任务并处于等待模式(从不取消)。没问题。令人困惑的是,当我开始活动时(虽然存在陈旧的 asyncTask),然后似乎启动了一个新的 asyncTask(因为调用了 OnPreExecute 的日志)但是 nextAsyncTask 中的 doInBackground 没有执行,因为 Test2 日志不是显示。
知道为什么吗?
【问题讨论】:
-
Asynctask 顾名思义就是异步的