【发布时间】:2023-03-21 13:20:01
【问题描述】:
在我的应用程序中,我在 Activity 启动时使用 AsyncTask 来获取特定联系人的铃声。
它工作正常,但我注意到如果应用程序在 AsyncTask 到达 doInBackground 方法之前停止了两次,那么当 Activity 再次启动时 AsyncTask 无法正常运行,只能到达 onPreExecute() 方法。
这是我的代码:
AsyncTask 本身:
private class SelectRingtoneTask extends AsyncTask<String, Void, Void> {
// can use UI thread here
protected void onPreExecute() {
Log.d("cda", "Into selectRingToneTask - onPreExecute() - " + selectRingtoneFinished);
}
// automatically done on worker thread (separate from UI thread)
protected Void doInBackground(final String... args) {
Log.d("cda", "Into selectRingToneTask - !!!!!!!!!!!!!!!");
getRingTone();
return null;
}
// can use UI thread here
protected void onPostExecute(final Void unused) {
selectRingtoneFinished = true;
Log.d("cda", "Into selectRingToneTask - onPostExecute - " + selectRingtoneFinished);
}
}
我在启动时调用 AsyncTask:
if(srtt == null){
srtt = new SelectRingtoneTask();
Log.d("cda", "RingTone - " + srtt.getStatus());
}
srtt.execute();
问题发生在我启动 Activity 并在 AsyncTask 完成之前关闭 Activity 时,如果这种情况发生一次,它似乎很好,但在它发生第二次之后,AsyncTask 只会到达 onPreExecute() 方法和在应用程序被强制停止并重新启动之前,永远不会再次完成。
有人知道为什么会这样吗?
【问题讨论】: