0

活動有三個片段。第三個片段具有異步任務。如何在活動中取消後退異步任務。如何取消活動中的後退異步任務

public void onBackPressed() { 

      android.app.Fragment currentVisibleFragment = getFragmentManager().findFragmentById(R.id.container); 
      if(currentVisibleFragment != null) { 
       String visibleFragmentName = currentVisibleFragment.toString(); 
       if (visibleFragmentName.contains(LearnToWriteLetterUtils.TAMIL_LEARN_TO_WRITE_FLASHSCREEN)) { 

        Log.d("app finished", "finished"); 
        finish(); 
       } else if (visibleFragmentName.contains(LearnToWriteLetterUtils.TAMIL_LEARN_TO_WRITE_INDEXPAGE)) { 
        Log.d("app finished", "exit"); 
        finish(); 
       } else if (visibleFragmentName.contains(LearnToWriteLetterUtils.TAMIL_LEARN_TO_WRITE_LOADING_SCREEN)){ 

        getFragmentManager().beginTransaction().replace(R.id.container, tamilLearnToWriteIndexPage, LearnToWriteLetterUtils.TAMIL_LEARN_TO_WRITE_INDEXPAGE).commit(); 
       } 
      } 
    } 

回答

0

試試這個:

public void onBackPressed() 
{ 
    myTask.cancel(true); 
} 
0

保持在Fragment稱爲mIsCanceled一個字段變量。在後面按下,將其設置爲true(通過使用方法調用,也許寫入方法cancelTask())。請繼續在異步任務中檢查mIsCanceled,如果爲true,則退出。

0

取消任務: 通過調用cancel(boolean)可以隨時取消任務。 調用此方法將導致對isCancelled()的後續調用返回true。在調用此方法後,onCancelled(Object), 而不是onPostExecute(Object)將在doInBackground(Object [])返回後調用。 爲確保儘快取消任務,如果可能(例如,在循環內部),應始終從doInBackground(Object []), 週期性檢查isCancelled()的返回值。