假设我有一个长期运行的服务来监控外部设备的网络。每当它在网络中发现一个新设备时,它就会在本地 SQLite 数据库中的表中添加一行,并且每当它检测到已知设备上的状态发生变化时,它都会更新表中的相应行。(顺便说一句,无法预测这些发现和更新的频率或频率——外部网络向自己的鼓手进军!)
现在,假设我有一个 Activity(在同一进程中),其中包含由上述表支持的 ListView。在 ListView 最初填充的那一刻,它当然与后备表同步——但过了一会儿(或两个,或三个),由于外部设备网络的变化,表发生了变化,由服务。
Service 通知 Activity 需要刷新 ListView 的最佳方式是什么,即在 Cursor 上调用 requery(),然后在适配器上调用 notifyDataSetChanged()?
我在这里看到了一些关于 SO 的帖子,其中的方法似乎是“在 Activity 上注册广播接收器,并从服务发送广播 Intent”——但这对于本地服务来说似乎有点矫枉过正。没有更简单的方法吗?
例如,我在想,由于我可以通过 Binder 对象获取本地 Service 对象的句柄,因此我可以向 Activity 注册某种回调,以便在需要时由服务调用。这听起来可行吗?(或者我会进入死胡同吗?)
期待您的见解。
米