簡體   English   中英

活動被銷毀時AsyncTask的狀態

[英]state of AsyncTask when the activity gets destroyed

在我的主要活動中,我運行了一個AsyncTask ,它在postExecute()更新了ListView. 現在擺在postExecute()如果我的行為被因任何原因會是什么狀態被破壞被稱為AyncTask onPostExecute() UI更新將引發異常。

我認為的一種方法是取消onDestory()的ayncTask。 但是如果asynctask在postExecute中時,銷毀時將調用如何處理它。

但是如果asynctask在postExecute中時,銷毀時將調用如何處理它。

這種情況根本不可能發生,因為這兩個方法都是在UI線程上調用的,這意味着一個方法在另一個方法被調用之前就已經完成。

當您的UI不再可用時(在onDestroy ),請取消AsyncTask

onPostExecute您可以檢查AsyncTask的取消狀態。 您還可以在Activity上檢查isFinishing

您如何處理這樣的代碼異常,您可以在AsyncTask中處理異常

public abstract class ExceptionAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {

    private Exception exception=null;
    private Params[] params;

    @Override
    final protected Result doInBackground(Params... params) {
        try {
            this.params = params; 
            return doInBackground();
        }
        catch (Exception e) {
            exception = e;
            return null;
        }
    }

    abstract protected Result doInBackground() throws Exception;

    @Override
    final protected void onPostExecute(Result result) {
        super.onPostExecute(result);
        onPostExecute(exception, result);
    }

    abstract protected void onPostExecute(Exception exception, Result result);

    public Params[] getParams() {
        return params;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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