[英]Android external Async Task with callback, do i need to dispose the callback?
有一個小問題,並希望對此一些建議。
這是我的異步任務
public class DummyTask extends AsyncTask<Void, Void, Void> {
private OnDummyTaskComplete mOnDummyTaskComplete;
public DummyTask(OnDummyTaskComplete listener) {
mOnDummyTaskComplete = listener;
}
@Override
protected Void doInBackground(Void... params) {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
mOnDummyTaskComplete.onDummyTaskComplete();
}
}
這是我的回叫
public interface OnDummyTaskComplete {
void onDummyTaskComplete();
}
這是實現回調啟動異步任務的活動。
public class MainActivity extends ActionBarActivity implements OnDummyTaskComplete {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DummyTask dummyTask = new DummyTask(this);
dummyTask.execute();
}
我是否需要處置回調以避免內存泄漏? 是否需要以下代碼?
@Override
protected void onPostExecute(Void aVoid) {
mOnDummyTaskComplete.onDummyTaskComplete();
mOnDummyTaskComplete = null;
}
我是否需要處置回調以避免內存泄漏?
否onPostExecute()
運行后不久, AsyncTask
實例將失去范圍,並失去對mOnDummyTaskComplete
引用。 只是一定不要引用mOnDummyTaskComplete
(或其他任何可能包含的參考MainActivity
)從內部doInBackground
; 否則,您確實會面臨Context
泄漏。 有關詳細信息,請參見此相關的SO問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.