如何从后台服务更新安卓活动中的信息

我正在尝试创建一个简单的Android应用程序,该应用程序具有一个信息的ActivityList,当应用程序启动时,我计划启动一个服务,该服务将不断计算数据(它将不断变化),并且我希望ActivityList与服务在应用程序的生命周期内计算的数据同步。

如何将我的活动设置为收听服务?这是解决这个问题的最佳方法吗?

例如,如果您想象一个股票价格列表 - 数据将定期更改,并且需要与不断计算/获取数据的(在我的情况下)服务同步。

提前致谢


答案 1

如何将我的活动设置为收听服务?这是解决这个问题的最佳方法吗?

在我看来,您有三个主要选择:

  1. 投票。定期询问 提供最新数据。恕我直言,这个选项很糟糕,但它肯定是可能的。ActivityService

  2. 回调。根据 jax 的应答,注册一个回调对象(“观察者”)。.当数据更改时,它将在回调上调用一个方法,这反过来又会更新 UI。您可以在此处查看使用它的示例。ActivityServiceServiceService

  3. 广播。广播数据更改的过孔。注册一个 using ,并通知传入的广播。这将触发 从 加载最新数据,或者可能只是为了从广播中的附加内容中获取最新数据。您可以在此处查看使用该技术的示例IntentsServiceIntentsendBroadcast()ActivityBroadcastReceiverregisterReceiver()BroadcastReceiverActivityServiceIntentService


答案 2

这听起来像是观察者模式的一个很好的候选者。基本上,您的活动(观察者)将在后台服务(可观察)中注册自己,您可以从活动中推送或提取数据。在这种情况下,您的观察者将是您的活动,可观察对象将是您的服务。

如果您对设计模式一无所知,请购买“Head First Design Patterns”,它很容易阅读,并且充满了很棒的信息。

PS:我现在正在阅读。


推荐