我应该在我的接收器中使用android:process =“:remote”吗?
我有一个经常被调用的BroadcastReceiver,我注意到有很多人使用
android: process =":remote"
在他们的接收器。 矿井是用来检查一些事情,如果条件匹配,然后激活一个警报。 我的问题是我应该使用我上面张贴在我的清单中的行吗? 如果是的话,这样做的好处是什么?
通过使用android:process=":remote"
定义你的接收器,你基本上在不同的进程(= VM)中运行你的接收器。 对于典型的用例,你不需要在不同的进程中运行这个程序,无论你想要做什么,都可以在本地运行(在你的APK进程中)。
使用android:process=":remote"
的缺点是你需要额外的资源来运行(在这种情况下是一个单独的进程)。 这样做时,基本上是处理2个虚拟机,而某些模式(如单例,静态字段)不能再在应用程序和远程服务之间共享。
使用android:process=":remote"
的好处在于,对于某些使用情况,在您closures应用程序之后启动一个将继续运行的服务(在其自己的进程中),或者如果您希望远程客户端能够绑定到您的服务。 在调用onReceive()
方法的时候,你的广播接收器不会阻塞你的应用程序的主线程,但在另外一个进程中运行(但是还有其他的方法可以实现)。
我发现在大多数情况下,对于大多数常见的用例,您可以不使用android:process=":remote"
。
- android片段onRestoreInstanceState
- SoftKeyboard在Android中的活动中打开和closures监听器?
- java.lang.RuntimeException:Handler(android.os.Handler)将消息发送给死线程上的Handler
- 有没有Android Drawabledevise师?
- androiddevise的TabLayout选项卡的文字大小
- 在android webview中使用JavaScript
- 自定义可绘制ProgressBar / ProgressDialog
- 底部导航视图中选定的选项卡的颜色
- ANDROID – ExpandableListView