android - sqlite 数据库更改时自动更新 ListActivity

标签 android sqlite service listactivity

我有一个 android 应用程序,它有一个后台服务,该服务轮询 Web 服务以获取新信息并将其写入我的应用程序的 sqlite 数据库中。该应用程序还有一个列表 Activity ,用于显示此 sqlite 数据库中的数据。

基本上,如果新数据从写入服务的服务进入 sqlite 数据库,我希望列表在查看时自动更新。我可以只提供一个刷新按钮,但如果它能自动更新就更好了。有没有简单的方法可以做到这一点?该服务是否应该只触发 listactivity 订阅的事件并使适配器无效?或者有没有一种方法可以让适配器基于游标或其他东西并在基础数据更改时自动更新?只是试图从架构上思考这个问题,并想要最好的、最可维护的(和快速开发的)方法。我很好奇我是否错过了一个可以让这一切变得更容易的可能性。

顺便说一下,我在 Android 上使用 Mono(公司政策,不是我的选择)。

最佳答案

Basically I want the list to auto update while looking at it if new data comes into the sqlite database from the service writing to it.

您可以在包含列表的 Activity 中实现一个动态注册的 BrodcastReceiver(在 onResume 回调中),它可以监听一个自定义广播。当此 BroadcastReceiver 接收到自定义广播时,您将更新光标,调用 notifyDataSetChanged,换句话说,引用列表。您的 Service 将在收到新值时将其插入数据库,并且在完成该任务后可以发送广播,您的自定义广播会通知感兴趣的观察者新数据可用。如果 Activity 在前台,这将触发 Activity 中的接收器。

我不知道 Mono for Android 能给你一些代码,但你应该能够根据上面的想法实现一些东西。

关于android - sqlite 数据库更改时自动更新 ListActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12822985/

相关文章:

c++ - 使用sqlite3时内存不足

android:如何将 Canvas 绘制到 XML 中的现有 View 中

java - 在 ListView 中隐藏和显示列表项无法正常工作

android - SQLite 的 "NO ACTION"外键约束到底做了什么,它与 "RESTRICT"有何不同?

ios - Sqlite 结果集包含空值

http - super 0.12.x : Implementing Service for a struct

java - JSL Windows 服务未启动

Android 服务 - BindService 与 startService 一起使用时出现问题

android - RunBlocking 与 Dispatcher 通信不起作用

使用 Google OpenID 进行 Android 身份验证。接下来是什么?