我正在尝试创建一个具有 ActivityList 信息的简单 Android 应用程序,当应用程序启动时,我计划启动一个服务,该服务将不断计算数据(它会不断变化)并且我希望 ActivityList 是与服务在应用生命周期内计算的数据同步。
如何设置我的 Activity 以收听服务?这是解决此问题的最佳方法吗?
例如,如果您想象一个股票价格列表 - 数据会定期更改,并且需要与(在我的情况下)不断计算/获取数据的服务同步。
提前致谢
最佳答案
How can I set up my Activity to be listening to the Service? Is this the best way to approach this problem?
在我看来,您有三个主要选择:
轮询。
Activity
定期向Service
询问最新数据。恕我直言,这个选项很糟糕,但它肯定是可能的。回调。根据 jax 的回答,
Activity
向Service
注册了一个回调对象(“观察者”)。Service
在数据更改时调用回调上的方法,从而更新 UI。您可以看到将其与Service
here 一起使用的示例.广播
Intent
。Service
在数据更改时通过sendBroadcast()
广播Intent
。Activity
使用registerReceiver()
注册一个BroadcastReceiver
,并通知BroadcastReceiver
传入广播。这会触发Activity
从Service
加载最新数据,或者可能只是从广播Intent
中的 extras 中获取最新数据。您可以看到将这种技术与Service
here 一起使用的示例.
关于java - 如何从后台服务更新 Android Activity 中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468874/