1

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

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

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

4

2 回答 2

2

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

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

我不知道MonoAndroid 会给你一些代码,但你应该能够从上面的想法中实现一些东西。

于 2012-10-10T16:10:05.067 回答
0

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

于 2012-10-10T16:32:23.493 回答