活动有三个片段。第三个片段有异步任务。如何在活动中按下取消异步任务。
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 :(得分: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()的返回值, 如果可能的话(例如在循环内)。