广播交付和性能
Posted
技术标签:
【中文标题】广播交付和性能【英文标题】:Broadcast delivery and performance 【发布时间】:2011-07-28 17:43:10 【问题描述】:我猜测广播消息是发布到消息中的 接收线程的队列并通过looper传递。广播是在消息队列中的其他消息之前传递还是只是附加到队列的末尾?我没有特别的需要或类似的东西,只是出于好奇想知道。
在服务和 Activity 之间使用 IPC 广播的性能开销(CPU 和内存)是多少?
GL
【问题讨论】:
【参考方案1】:广播是在消息队列中的其他消息之前传递还是只是附加到队列的末尾?
我认为他们只是排在队列的末尾。测试这一点的简单方法是将post()
和Runnables
加入到队列中,每个都睡一会儿,然后给自己发送一个广播。如果Runnables
在广播前都处理好了,那就结束了。如果广播是在后面Runnables
之前处理的,那么它是在前面注入的。
在服务和 Activity 之间使用 IPC 广播的性能开销(CPU 和内存)是多少?
谦虚,正如@jlindenbaum 所建议的那样。我不建议尝试启动成千上万的事情,并且有针对进程内工作的更轻量级的解决方案(例如,Messenger
)。
【讨论】:
【参考方案2】:我从未注意到使用此功能的设备有相当大的压力。
这是我发现的唯一一种“理智”的方式,可以在服务和活动之间进行通信,而不会导致 UI 线程出现问题。
【讨论】:
以上是关于广播交付和性能的主要内容,如果未能解决你的问题,请参考以下文章