android - 我应该使用 android : process =":remote" in my receiver?

标签 android broadcastreceiver android-broadcast

我有一个经常被调用的 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/

相关文章:

java - React Native - java.lang.RuntimeException : SDK location not found. 在 local.properties 中使用 sdk.dir 定义位置

android - 如何连接到 Wifi ScanResult 项目

Android:更改 list 中的 BroadcastReceiver 属性是否可以阻止其在用户更新应用程序时接收广播?

android - 如何在Android应用程序后台监听音量键事件?

java - 挂断来电

android - 访问数据库 RECEIVE_BOOT_COMPLETED

Android 连接 Node.js REST 流意外结束

android - 在拨号盘上按数字启动 Activity

java - 服务内的广播接收器不工作

android - 转到 SMS Pro 覆盖 android.provider.Telephony.SMS_RECEIVED