你应该在你的 AsyncTask 中有一个观察者,当你的活动消失时你可以为空。
例子
活动:
private List<MyAsyncTask> mMyAsyncTasks;
private void addAsyncTask(MyAsyncTask task) {
mMyAsyncTasks.add(task);
}
public void onDestroy() {
for(MyAsyncTask task : mMyAsyncTasks) {
task.removeObserver();
}
}
异步任务:
public class MyAsyncTask extends AsyncTask<Something, Something, Something> {
private MyAsyncTaskObserver mObserver;
private int mButtonId;
public MyAsyncTask(MyAsyncTaskObserver observer, int buttonId) {
mObserver = observer;
mButtonId = buttonId;
}
public void removeObserver() {
mObserver = null;
}
public void onPostExecute(Something result) {
...
if (mObserver != null) {
mObserver.onMyDataAvailable(result, mButtonId);
}
}
}
此外,您的 AsyncTask 不应该在您的 Activity 中,因为如果您的 Activity 被销毁,它可能会导致内存泄漏。