【问题标题】:Closing Activity and returning to parent Activity after AsyncTask finishesAsyncTask 完成后关闭 Activity 并返回父 Activity
【发布时间】:2017-12-16 18:47:49
【问题描述】:

假设 Activity A 是父 Activity,而 Activity B 是子 Activity。活动 B 实现 AsyncTask。在 AsyncTask 完成后,我希望通知用户异步功能已正确完成,然后我希望我的应用程序返回到 Activity A 而不用户与 Activity B 交互。 我知道 onPostExecute 将促进我正在尝试做的事情。

  1. 我应该使用snackbar 还是创建一个对话框?
  2. 是否可以在返回 Activity A 后通知用户 AsyncTask 正确完成?

也许这些问题是微不足道的,但我正试图获得更多的见解

【问题讨论】:

  • 是的,在活动 B 的 onPostExecute() 中调用 finish()。

标签: android android-activity android-asynctask


【解决方案1】:
  1. 您应该使用带有 setEnableToTochOutside(false) 的对话框来防止用户在异步任务的 Preexcute 上与活动 B 进行交互。
  2. 在 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() 来结束活动。应该可以的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多