在我的应用程序中,我在 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();
问题发生在我在 AsyncTask 完成之前启动活动并关闭 Activity 时,如果这种情况发生一次,它似乎很好,但在第二次发生后,AsyncTask 只会进入 onPreExecute() 方法并且永远不会完成再次,直到应用程序被强制停止并重新启动。
有没有人知道为什么会发生这种情况?