我可以更新后台 activity 的 UI 吗?

Can I update the UI of an activity which is in background?

这个问题比编码相关的问题更概念化。

我有一个应用 Activity A 和 B。

我从 Activity A 调用了一个 AsyncTask,在调用过程中,我不想阻止显示进度对话框的用户,因此我的用户可以在应用程序中自由移动不会厌倦等待。

现在,查询是 AsyncTask 或者假设正在从 Activity A 调用 Service,它负责从服务器下载某种数据。正在拨打电话时,用户更改了 Activity 并且 Activity A 已转到后台。

现在,当用户在应用程序中自由移动时,他只想返回 Activity A 检查下载状态,(可以说我设置了一些数据到我的 TextView).

现在的问题是,一旦下载结束,我的 Activity A 仍在后台,我的 UI 应该更新,而 Activity 仍在后台。这样用户感觉他在切换到 Activity A.

之前获得了数据

这可能吗,如果可能的话怎么办? 总结我的问题,我可以更新 Activity 的 UI 而它仍在后台使用 Activity 调用以获取数据的 AsynctaskService来自服务器。

一个 post 建议我最好更新 onResume() 中的 **UI。我的问题是,这是唯一的方法吗?

onResume() 将是最好的方法。您可以将更改保存在 SharedPreferenes 中或使用 Intent 传递数据并在 UI 可见之前显示更改。

另一种方法是 运行 服务并检查 activity 是否可见。如果它可见,立即更新 UI 或等到用户访问 activity。要检查 activity 当前是否可见,请参见此处,

How to check if activity is in foreground or in visible background?

once the download is over , while my Activity A is still in background, my UI should be updated while Activity is still in background. This way the user feels he gets the data before he switches to Activity A.

这是不可能的。你看,Activity 必须通过 onCreate()onResume() 回调才能更改 UI。

此外,当 returns 到前台时,您应该使用 bound Service 来更新 Activity