我可以更新后台活动的UI吗?

时间:2015-05-27 16:18:35

标签: android android-activity android-asynctask android-service

这个问题比编码相关更具概念性。

我有一个Activity A和B的应用。

我从AsyncTask A拨打Activity,在拨打电话时,我不想阻止用户显示progressdialog,因此我的用户可以自由地移动应用程序没有厌倦等待。

现在,查询为AsyncTask或者说Service正在从Activity A调用Activity,它负责从服务器下载某种数据。在进行通话时,用户已更改ActivityActivity A已进入后台。

现在,当用户在应用程序中自由移动时,他只想回到TextView A来检查下载状态(这可以说是我将一些数据设置到我的{{1} })。

现在的问题是,一旦下载结束,当我的Activity A仍在后台时,我的用户界面应该在Activity仍在后台时更新。这样,用户在切换到Activity A之前就感觉到他获得了数据。

这是可能的,如果是这样的话怎么样? 总结我的问题,我是否可以更新Activity的用户界面,同时AsynctaskService Activity调用来自服务器的数据onResume()。 / p>

一篇帖子建议理想情况下我需要更新UIViewControllerContextTransitioning中的**用户界面。我的问题是,这是唯一的方法吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

  

下载完成后,当我的Activity A仍在后台时,我的用户界面应该在Activity仍在后台时更新。这样,用户在切换到Activity A之前就感觉到他获得了数据。

这是不可能的。您看,Activity必须通过onCreate()onResume()回调才能更改用户界面。

此外,当Activity返回前台时,您应该使用bound Service来更新strcmp()