我有一个经常被调用的 BroadcastReceiver,我注意到很多人都在使用
android: process =":remote"
在他们的接收器中。我的用于检查一些事情,如果条件匹配,则激活警报。我的问题是我应该使用上面在 list 中发布的行吗?如果是这样,这样做有什么好处?
最佳答案
通过使用 android:process=":remote"
定义您的接收器,您基本上可以在不同的进程 (= VM) 中运行您的接收器。对于典型的用例,您不需要在不同的进程中运行它,并且您想做的任何事情都可以在本地(在您的 APK 进程中)正常运行。
使用 android:process=":remote"
的缺点是您需要额外的资源才能运行它(在这种情况下是一个单独的进程)。这样做时,您基本上是在处理 2 个虚拟机,并且某些模式(例如单例、静态字段)不能再在您的应用和远程服务之间共享。
使用 android:process=":remote"
的好处是,对于某些用例,启动一个在之后继续运行(在自己的进程中)的服务可能会很方便您已经关闭了应用程序,或者您希望远程客户端能够绑定(bind)到您的服务。您的广播接收器在调用 onReceive()
方法后在单独的进程中运行时不会阻塞您的应用程序主线程(但是,还有其他实现方式)。
我发现大多数时候,对于最常见的用例,您无需使用 android:process=":remote"
即可摆脱困境。
关于android - 我应该使用 android : process =":remote" in my receiver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4311069/