【发布时间】:2012-08-31 20:35:11
【问题描述】:
由于对应用程序的电池使用、内存和 cpu 使用有如此必要的关注,所以多个内容观察器与多个广播接收器的开销是多少?
示例 1:
使用 5 个内容观察器以 START_STICKY 运行的服务 正确注册/注销。
示例 2:
从清单中设置的 5 个广播接收器触发的服务。
示例 3:
使用 START_STICKY 运行的服务使用 5 个已注册 广播接收器。
观察者和接收者在电池使用/内存/cpu 方面的真正区别是什么?任何专业人士都可以对此发表意见吗?我假设 1 个实例不会产生太大影响,但让我们以上面的示例为例,同时运行 5 个。
【问题讨论】:
-
服务运行比清单接收器占用更多 RAM,因为无论如何运行的系统进程都会跟踪它们。正在运行的服务需要您的应用程序进程正在运行。其余的应该是相当的,因为仅仅等待事件并不涉及真正的 cpu / 电池使用。
-
@zapl:感谢您的回答。我不熟悉底层结构。我假设他们都使用回调,因此使用相同的资源量?
-
receivers 和 oberservers 都应该使用主线程循环器/消息队列机制,它将所有事件传递到您的应用程序并调用所有
onCreate、onTouch等方法。这也应该适用于onContentChanged和onReceive。当什么都没有发生时,主线程只是等待,所以 IMO 两者之间没有区别。 -
@zapl:您应该将此作为答案,以便将其标记为已接受。除非其他人有更好的答案,否则我认为您几乎涵盖了它。
标签: android broadcastreceiver battery contentobserver