Android - 从Binders转向广播

时间:2011-02-22 21:35:21

标签: android service

我从一个标准的本地android服务开始,并使用Binders与Listeners进行通信。然后:我开始注意到处理方向更改的一些严重问题,所以我决定跳过整个绑定器的事情,然后选择包含需要传递的所有数据/命令的广播意图(并使用startService)。 p>

我的问题是:使用这种方法时我需要注意哪些陷阱?

有任何缺点吗?

1 个答案:

答案 0 :(得分:1)

如果您支持API级别4及更高版本,请使用setPackage()使您的“广播”成为“窄播” - 将广播保留在您的应用中。默认情况下,广播是对所有应用程序进行真正广播的,这对您的数据可能是好的,也可能不是。

不要忘记取消注册您的BroadcastReceiver(即,不要注册并忘记它)。同时,如果服务包装并且活动已经过去(例如,BACK按钮),您将需要考虑该怎么做。一种方法是使用具有低优先级清单注册接收器的有序广播,如果没有活动处理广播,则会引发Notification - this sample app表明我的意思。

您可能会考虑使用Messenger而不是广播方法,因为它本质上是一个“窄播”,可能是一个微不足道的开销,并且不能泄露。不过,我仍在研究使用配置更改的机制。

相关问题