finishAffinity 不会终止异步任务

当我打电话时finishAffinity,我观察到它不会终止从其他活动打开的异步任务。

当我打电话时,如何完成来自其他活动的所有异步任务finishAffinity

finishAffinity();


POPMUISE
浏览 145回答 2
2回答

守着一只汪

解决方案 1如果您正在从另一个活动完成,您可以尝试覆盖正在执行您的 AsyncTask 的活动上的 onDestroy() 方法。@Overrideprotected void onDestroy() {    if(asyncTask != null) {        asyncTask.cancel(true);    }    super.onDestroy();}解决方案 2或者,您可以开始下一个活动,startActivityForResult()并且您可以setResult()在调用finishAffinity(). 在上一个活动中,您需要通过覆盖onActivityResult()方法检查结果。检查您的结果是否在finishAffinity()调用时设置,您可以像这样调用取消方法:if(asyncTask != null) {    asyncTask.cancel(true);}解决方案 3您也可以使用观察者模式和事件总线从下一个活动触发事件并从上一个活动中捕获它。当事件触发时,您可以检测到它并取消您的asyncTask。

慕婉清6462132

您需要停止AsyncTask从onDestroy你的功能Activity。当Activity完成时,它应该AsyncTask使用它们的引用停止之前创建的。让我们假设ActivityA已经开始以下AsyncTask。// You might have started your AsyncTask like thisprivate YourAsyncTask mTask;mTask = new YourAsyncTask().execute();在您的onDestroy函数中ActivityA写入以下内容。if(mTask != null) mTask.cancel(true);希望有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java