我在创建允许在不同时间添加/删除多个侦听器的NON-IPC服务时遇到一些麻烦,例如,我希望能够随时联系该服务并“订阅”其事件,或者“取消订阅“从中。该服务每隔一段时间唤醒一次,并向所有订阅的听众发送一个事件。
我一直在查看stackoverflow示例,谷歌搜索等,特别是我发现类似的东西: android restful api
在该示例中,建议使用ResultReceiver作为服务的回调。但是在这种方法中,这并不意味着服务只能通知发送给它的侦听器作为第一个意图的一部分(即我不能随时添加/删除侦听器)?
此外,在该示例中,如果操作由于某种原因被OS销毁,会发生什么情况,但是服务仍然具有对侦听器的引用并尝试调用它?听众会尝试对不再存在的活动执行某些操作,对吗?
也许我错过了一些东西......如果可能的话,我会很感激。
TNX
答案 0 :(得分:1)
首先,'睡眠'服务在Android中是反模式的。如果您需要定期执行某些操作,请使用AlarmManager启动服务。其次,服务可以随时重新启动,因此您不能依赖于“订阅”,您可以继续引用其他组件(主要是活动)。如果您需要向多个活动发送通知,请使用广播接收器。活动可以静态注册(使用AndroidManifest.xml),也可以动态(使用代码)注册。