activity 如何在返回时取消异步任务
how to cancel the asynchronous task on back press in activity
一个activity有三个片段。第三个片段有异步任务。 activity 如何在返回时取消异步任务。
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();
}
}
}
试试这个:
public void onBackPressed()
{
myTask.cancel(true);
}
在 Fragment
中保留一个名为 mIsCanceled
的字段变量。在后退时,将其设置为 true
(通过使用方法调用。也许写一个方法 cancelTask()
)。在异步任务中继续检查mIsCanceled
,如果为真则退出。
正在取消任务:
可以通过调用 cancel(boolean) 随时取消任务。
调用此方法将导致对 isCancelled() 的后续调用为 return true。调用此方法后,onCancelled(Object),
而不是 onPostExecute(Object) 将在 doInBackground(Object[]) returns 之后被调用。
为确保尽快取消任务,您应该始终定期从 doInBackground(Object[]) 检查 isCancelled() 的 return 值,
如果可能(例如在循环内。)
一个activity有三个片段。第三个片段有异步任务。 activity 如何在返回时取消异步任务。
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();
}
}
}
试试这个:
public void onBackPressed()
{
myTask.cancel(true);
}
在 Fragment
中保留一个名为 mIsCanceled
的字段变量。在后退时,将其设置为 true
(通过使用方法调用。也许写一个方法 cancelTask()
)。在异步任务中继续检查mIsCanceled
,如果为真则退出。
正在取消任务: 可以通过调用 cancel(boolean) 随时取消任务。 调用此方法将导致对 isCancelled() 的后续调用为 return true。调用此方法后,onCancelled(Object), 而不是 onPostExecute(Object) 将在 doInBackground(Object[]) returns 之后被调用。 为确保尽快取消任务,您应该始终定期从 doInBackground(Object[]) 检查 isCancelled() 的 return 值, 如果可能(例如在循环内。)