当sqlite数据库更改时自动更新ListActivity

时间:2012-10-10 15:27:38

标签: android sqlite service listactivity

我有一个Android应用程序,它有一个后台服务,它会轮询Web服务以获取新信息,并将其写入我的应用程序的sqlite数据库。应用程序还有一个列表活动,显示来自此sqlite数据库的数据。

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

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

2 个答案:

答案 0 :(得分:2)

  

基本上我希望列表在查看时自动更新,如果是新的   数据从写入它的服务进入sqlite数据库。

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

我不知道Android的Mono为您提供了一些代码,但您应该能够实现上述想法。

答案 1 :(得分:0)

您可以使用Handler类更新列表。当有新数据时,您可以从后台服务向Activity发送消息,并在Handler类的handleMessage()方法中更新列表。