我有一个具有后台服务的android应用程序,该服务会轮询网络服务以获取新信息,并将其写入我的应用程序的sqlite数据库中。该应用程序还具有一个列表活动,该活动显示此sqlite数据库中的数据。
基本上,如果从服务写入到sqlite数据库的新数据进入了sqlite数据库,我希望列表在查看时自动更新。我可以提供各种刷新按钮,但是如果它可以自动更新,那就太好了。有没有简单的方法可以做到这一点?该服务是否应该触发listactivity订阅的事件并使适配器无效?还是有一种方法可以使适配器基于游标或其他对象,并在基础数据更改时自动更新?只是试图从架构上考虑一下,并想要最好的,最可维护的(并且快速开发)的方法。我很好奇我是否错过了使它变得容易得多的可能性。
顺便说一句,我正在为Android使用Mono(公司政策,不是我的选择)。
最佳答案
基本上我希望列表在查看时自动更新
数据从写入服务的数据进入sqlite数据库。
您可以在包含列表的BrodcastReceiver
中实现动态注册的onResume
(在Activity
回调中),该列表可以侦听自定义广播。当此BroadcastReceiver
收到自定义广播时,您将更新游标,调用notifyDataSetChanged,换句话说,刷新列表。您的Service
会在接收到新值时将其插入数据库中,并且在完成该任务后可以发送广播,您的自定义广播将向感兴趣的观察者宣布新数据可用。如果活动在前台,则会在Activity
中触发接收器。
我不知道Android的Mono
是否可以为您提供一些代码,但是您应该能够实现上述想法。