BroadcastReceiver或Messenger通过Handler

ray*_*man 15 android android-sdk-2.1 android-service

我有一个IntentService需要将消息传递给Activity.我知道有两种方法可以做到这一点.

  1. sendBroadcast()Service侧面使用,同时broadcastRecieverActivity接收消息的一侧注册.

  2. 传递Messenger到服务side,这将指向一个HandlerActivity一侧,这将是准备好接收来自服务该消息.

哪一个有利于哪个目的?或者两者都这样做?

Com*_*are 11

如果您IntentService不知道该活动是否存在(例如,可能已被销毁),或者是否有多个活动可能在前台并且想知道发生了什么,我会使用sendOrderedBroadcast().BroadcastReceiver如果需要,你可以安排一个"后台" 可以提出通知,正如我在这篇博文中概述并在这个示例项目中演示的那样.

但是,你的任何一种技术都可以起作用.

  • @rayman:当你尝试发送消息时,如果`Activity`消失,你会得到带有`Messenger`的`RemoteObjectException`,但由于它是一个经过检查的异常,你无论如何都需要处理它.如果只有一个组件需要了解该事件,并且如果该组件不在,则不需要引发"通知","Messenger"是最轻量级的解决方案. (3认同)