6

如果您有与服务通信的活动,或与服务通信的另一个服务,哪种“通信协议”可以更快地将其消息传递给绑定方?

传输到服务/从服务传输的消息都是字符串或可打包的对象。

如果您想将批量数据发送到另一个服务或活动,我很难确定哪种方法更快。我找不到有关 Messenger 发送的意图或消息的处理速度的详细信息。

有人有这方面的经验吗?

4

2 回答 2

5

对于 Intent,IntentResolver需要时间来找到合适的目标,因为它会搜索接收者列表。这种情况下的表现将取决于您的系统和接收器的数量,IntentResolver 需要搜索以找到合适的接收器。

另一方面,如果您通过Handler发送消息,它将使用同一线程的消息队列,这种情况下的性能将取决于该队列上的可用消息。

所以看起来消息会比 Intent 更快,或者至少在理论上,但你总是可以编写一个简短的程序来查看输出。

但是,如果您有大量数据要从服务发送到 Activity,您可以考虑另一种替代解决方案,将数据写入持久存储,然后通知您的 Activity 数据已准备好。收到通知后,Activity 从数据源中读取数据。这样,如果用户接听电话或在您之间受到干扰,数据是安全的。

于 2013-09-27T23:03:06.227 回答
3

您可能需要考虑 LocalBroadcastManager.sendBroadcastSync() http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html#sendBroadcastSync(android.content.Intent)

如果您的活动和服务在同一个进程中,那么最好使用 LBM,因为它更快、更安全。它为您提供了发送广播“同步”的选项,这意味着它会被立即处理,因此它可能会被认为是“最快的”,即使消息/处理程序比意图/接收器更快。

于 2013-09-27T23:51:21.920 回答