java - 如何从后台服务更新 Android Activity 中的信息

标签 java android android-listview observer-pattern

我正在尝试创建一个具有 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?

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

  1. 轮询。 Activity 定期向 Service 询问最新数据。恕我直言,这个选项很糟糕,但它肯定是可能的。

  2. 回调。根据 jax 的回答,ActivityService 注册了一个回调对象(“观察者”)。 Service 在数据更改时调用回调上的方法,从而更新 UI。您可以看到将其与 Service here 一起使用的示例.

  3. 广播 Intent Service 在数据更改时通过 sendBroadcast() 广播 IntentActivity 使用 registerReceiver() 注册一个 BroadcastReceiver,并通知 BroadcastReceiver 传入广播。这会触发 ActivityService 加载最新数据,或者可能只是从广播 Intent 中的 extras 中获取最新数据。您可以看到将这种技术与 Service here 一起使用的示例.

关于java - 如何从后台服务更新 Android Activity 中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468874/

相关文章:

java - 写入文件的最快方法?

android - 压缩对齐 : command not found

Android 应用程序在执行 if 语句时崩溃?

android - Android ListView 横向模式下每行 2 个项目

android - 如何在没有 XML 的情况下以编程方式创建 ListView 并向其添加项目?

java - 如何设置Textarea的最大行数

java - 在Intellij Idea下使用Maven和ReactJS启动一个Spring Web应用程序项目

java - HTTP 请求不会经过 Controller

android - 约束布局 - 将布局分组到链中

android - 如何有效地显示来自 SQLite 记录的 HashMap 值?