当应用程序处于后台时,Android Async Task不会更新UI

时间:2014-10-30 04:40:57

标签: android android-activity android-asynctask android-ui android-background

我正在处理的应用程序下载并解析一个大的xml文件来填充UI元素,即搜索和微调器。这是通过异步任务完成的。如果用户在此期间决定退出应用程序,则会正确下载信息,但是当应用程序恢复时,UI将不会更新。

这是因为在应用程序不活动时无法进行更改吗?检查UI是否未在简历上更新的最佳方法是什么?或者我应该使用Async任务做一些事情,检查UI线程是否可用?我很难调试这个,因为它涉及离开结束调试器的应用程序。

3 个答案:

答案 0 :(得分:2)

您可以通过广播接收来实现此方案。

按照步骤:

解决方案1:

第1步; 在执行Asyntask之前注册广播接收器。

第2步: 在Asyntask的onPostExecute方法中发送Broadcast。

第3步: 然后,您就可以在活动中收到广播消息。 并做任何你想做的事。

解决方案2:

否则,您可以在此场景中使用“接口回叫”。

希望它会对你有所帮助。

答案 1 :(得分:0)

不应该。应用程序处于后台意味着View个对象可能存在也可能不存在。实际上整个过程可能会停止或只是被android删除。

使用Service真正在后台进行处理。当处理完成但UI不存在时,发布通知让用户知道,或者,保存结果并在下次绑定到您的服务时提供给UI并请求相同的事情(a.k.a缓存)。

答案 2 :(得分:0)

后台应用程序可能不是实时的。在内存限制的情况下,O.S可能会破坏它。

诀窍是尝试另一种逻辑。

当应用程序从后台移动到前台时,调用onresume(),您可以尝试将数据保存到db并更新恢复调用中的内容。

当应用程序分别进入后台和前景时,将调用FYI.onPause()和OnResume()。