![](/img/trans.png)
[英]How can I stop asynctask in android when back button is pressed?
[英]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);
}
AsyncTask有一個cencel方法: http : //developer.android.com/reference/android/os/AsyncTask.html#cancel( boolean )
在Activity B的onDestroy()
方法中,你應該調用asynTask.cancel(true)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.