【发布时间】:2013-11-13 20:21:44
【问题描述】:
我有一个带有关联网站的 Android 应用。 我有一个 LoginActivity,它接受用户凭据,使用 AsyncTask 子类在网站上验证它们,如果正确将它们存储在 SharedPreferences 中以供将来使用。
我有一个 MainActivity,它根据 SharedPreferences 值显示用户详细信息。
所以当 AsyncTask 完成后,我需要刷新 Main 活动中显示的用户详细信息。
我可以通过在调用它时将对 MainActivity 的引用传递给 LoginActivity 来做到这一点,然后在 AsyncTask onPostExecute 中,调用该 MainActivity 实例中的一个函数来刷新显示的数据。 这似乎是一种常见的方式,但我不确定它是否完全安全。这不太可能,但是如果 MainActivity 在 AsyncTask 仍在处理时被操作系统终止会发生什么?
或者,在这种情况下,我可以在启动 LoginActivity 时完成 MainActivity,然后从 onPostExecute 启动一个新的 MainActivity,它将显示刷新的数据。 但我可能还有其他活动,其中在后台 AsyncTask 刷新数据时正在进行用户交互 - 在这些情况下,第二种方法将不起作用。
只是想知道是否有更好的方法,还是第一种方法足够安全?
【问题讨论】:
-
1.要在 AsyncTask 处理时处理 MainActivity 关闭,您应该让 MainActivity 使用 AsyncTask “取消注册”其自身,然后在任务回调主 Activity 之前,它应该检查该 Activity 本身是否“未注册”跨度>
标签: android android-asynctask android-activity