簡體   English   中英

帶有回調的Android外部異步任務,我是否需要處理該回調?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM