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

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

android: process =":remote" 

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

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

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

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

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