簡體   English   中英

當按下后退按鈕時如何在android中停止asynctask

[英]How to stop asynctask in android when back button is pressed

我有一個活動(比如Avtivity A),它運行一個asyncatsk並顯示一些結果,這些結果會顯示在另一個活動中(活動B)。 一切都很好。 當用戶單擊按鈕時,任務被觸發,另一個活動(活動B)與進度條一起顯示。 如果我按下活動B中的后退按鈕(進度條仍然可見),我轉到活動A.但是一段時間后(任務完成時)活動B變為可見。

當用戶在活動B中按下后退按鈕時,我希望停止asynctask(與活動A相關聯)。

請幫助我,謝謝你的幫助

MyAsyncTask myTask=null;
myTask = new MyAsyncTask();

執行任務

myTask.execute();

停止/取消任務

public void onBackPressed()
{

    myTask.cancel(true);
}

如果你顯示結果和進度條,並處理活動B中的取消,那么你可能應該在活動B中啟動你的AsyncTask。但是我建議你等到AsyncTask完成然后用捆綁中的數據啟動活動B. 無論哪種情況,您都可以在一個活動中處理所有與AsyncTask相關的事情。 盡量不要過分重視一切。 只需實現一些OnAsyncTaskFinishedListener(),如:

在AsyncTask類中:

public interface OnMyAsyncTaskCompletedListener {
    void onMyAsyncTaskCompletedListener(MyResults results);
}

@Override
protected void onPostExecute(MyResults results) {
    onMyAsyncTaskCompletedListener(results);
}

@Override
protected void onCancelled() {
    onMyAsyncTaskCompletedListener(null);
}

然后在您的Activity中實現OnMyAsyncTaskCompletedListener和

public void onServerRequestCompleted(MyResults results) {
    //Start activity passing results in Intent
}

最后,要取消正在運行的活動,請執行以下操作:

@Override
public void onBackPressed() {
    mMyAsyncTask.cancel(true);
}

Activity BonDestroy()方法中,你應該調用asynTask.cancel(true)

暫無
暫無

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

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