我有一个经常被调用的BroadcastReceiver,我注意到很多人使用
android: process =":remote"
在他们的接收器中。地雷用于检查一些物品,如果条件匹配,则激活警报。我的问题是我应该使用清单中上面发布的那一行吗?如果是这样,这样做的好处是什么?
Answers:
通过定义接收器,android:process=":remote"
基本上可以在其他进程(= VM)中运行接收器。对于典型的用例,您无需在不同的过程中运行它,而您想要做的任何事情都可以在本地运行(在您的APK过程中)。
使用的缺点android:process=":remote"
是您需要其他资源才能运行(在这种情况下,这是一个单独的过程)。这样做时,您基本上是在处理2个VM,并且某些模式(如单例模式),静态字段无法再在您的应用程序和远程服务之间共享。
使用的好处android:process=":remote"
是,对于某些用例,在关闭应用程序后或者希望远程客户端能够绑定后,启动将在其自身进程中继续运行的服务可能会很方便。为您服务。当在单独的进程中调用该onReceive()
方法运行时,广播接收器不会阻塞您的应用程序主线程(但是,还有其他方法可以实现此目的)。
我发现大多数情况下,对于大多数常见用例,您无需使用即可逃脱android:process=":remote"
。