AsyncTask 完成后关闭 Activity 并返回父 Activity
Posted
技术标签:
【中文标题】AsyncTask 完成后关闭 Activity 并返回父 Activity【英文标题】:Closing Activity and returning to parent Activity after AsyncTask finishes 【发布时间】:2017-12-16 18:47:49 【问题描述】:假设 Activity A 是父 Activity,而 Activity B 是子 Activity。活动 B 实现 AsyncTask。在 AsyncTask 完成后,我希望通知用户异步功能已正确完成,然后我希望我的应用程序返回到 Activity A 而不用户与 Activity B 交互。 我知道 onPostExecute 将促进我正在尝试做的事情。
-
我应该使用snackbar 还是创建一个对话框?
是否可以在返回 Activity A 后通知用户 AsyncTask 正确完成?
也许这些问题是微不足道的,但我正试图获得更多的见解
【问题讨论】:
是的,在活动 B 的 onPostExecute() 中调用 finish()。 【参考方案1】:-
您应该使用带有 setEnableToTochOutside(false) 的对话框来防止用户在异步任务的 Preexcute 上与活动 B 进行交互。
在 PostExcute 上,如果你想返回数据或类似标志的东西到活动 A,从活动 A,你 startActivityForResult(A, B)。而在activity B的PostExcute上,你将返回前的Data和result设置为activity A。当activity A收到数据时,只需在此处进行通知即可。或者,如果您想注意活动 B,只需制作 Toast,或带有取消按钮的对话框(按下完成活动 B)。关于StartActivityForResult:an example here
Activity A返回数据的种类很多,可以研究一下LocalBroadcast或者EventBus。
【讨论】:
【参考方案2】:您可以使用界面来通知您的活动以完成异步任务。 这是answer 的例子。
【讨论】:
感谢您的回答。我想做的是不同的。 AsyncTask 将在子 Activity 运行时执行。当 AsyncTask 完成时,我希望子 Activty 关闭并且应用程序返回父 Activty。【参考方案3】:在 AsyncTask 的 onPostExecute 方法中实现一个快餐栏,并调用 finish() 来结束活动。应该可以的。
【讨论】:
以上是关于AsyncTask 完成后关闭 Activity 并返回父 Activity的主要内容,如果未能解决你的问题,请参考以下文章