如何在活动中按下取消异步任务

时间:2015-12-11 05:45:32

标签: android android-fragments android-activity android-asynctask onbackpressed

活动有三个片段。第三个片段有异步任务。如何在活动中按下取消异步任务。

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();
                }
            }
    }

3 个答案:

答案 0 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

在名为Fragment的{​​{1}}中保留一个字段变量。在背面按下时,将其设置为mIsCanceled(通过使用方法调用。也许编写方法true)。继续检查异步任务中的cancelTask(),如果为true则退出。

答案 2 :(得分:0)

取消任务: 可以通过调用cancel(boolean)随时取消任务。 调用此方法将导致后续调用isCancelled()返回true。在调用此方法后,onCancelled(Object),  doInBackground(Object [])返回后将调用onPostExecute(Object)而不是onPostExecute(Object)。  为了确保尽快取消任务,您应该始终从doInBackground(Object [])定期检查isCancelled()的返回值, 如果可能的话(例如在循环内)。