我应该在接收器中使用android:process =“:remote”吗?

时间:2010-11-30 06:18:29

标签: android broadcastreceiver android-broadcast

我有一个经常被调用的BroadcastReceiver,我注意到很多人使用

android: process =":remote" 

在他们的接收器中。我用来检查一些事情,如果条件匹配,则激活警报。我的问题是,我应该使用我在清单上面张贴的行吗?如果是这样的话,这样做有什么好处?

1 个答案:

答案 0 :(得分:160)

通过使用android:process=":remote"定义接收器,您基本上可以在不同的进程(= VM)中运行接收器。对于典型的用例,您不需要在不同的进程中运行它,并且无论您想要做什么,都可以在本地运行(在APK过程中)。

使用android:process=":remote"的缺点是您需要额外的资源才能运行(在这种情况下是一个单独的进程)。这样做时,你基本上只处理2个虚拟机,而且你的应用程序和远程服务之间不能再共享像单例,静态字段这样的模式。

使用android:process=":remote"的好处是,对于某些用例,启动一个在关闭应用程序后继续运行(在自己的进程中)的服务,或者如果你希望远程客户端能够绑定到您的服务。当您在调用onReceive()方法时在单独的进程中运行时,您的广播接收器不会阻止您的应用程序主线程(但是,还有其他方法可以实现此方法)。

我发现在大多数情况下,对于大多数常见用例,您可以在不使用android:process=":remote"的情况下离开。