rwm*_*rwm 19 android broadcastreceiver android-lifecycle
我试图理解在Manifest中注册BroadcastReceiver和以编程方式注册它之间的主要区别...
我的理解基本如下(如果我遗漏了某些东西,我会感谢有人纠正我的观点).
在Manifest中注册:
以编程方式注册:
谢谢
Com*_*are 20
你有它基本上是正确的.
请注意,清单注册的接收器对象仅使用一次.BroadcastReceiver为每个广播创建了一个新的实例.清单注册接收器的主要用途是用于在代码不在内存中时可能继续进行的广播(例如,BOOT_COMPLETED通过您的预定警报AlarmManager).
何时使用哪种方法注册
使用哪种方法来注册您的 BroadcastReceiver 取决于您的应用程序如何处理系统事件。我认为您的应用程序想要了解系统范围的事件基本上有两个原因:
您的应用程序围绕这些事件提供某种服务
你的应用想要对状态变化做出优雅的反应
第一类的示例是需要在设备启动后立即运行的应用程序,或者在安装应用程序时必须启动某种工作的应用程序。Battery Widget Pro 或 App2SD 是这类应用程序的好例子。对于这种类型,您必须在清单文件中注册 BroadcastReceiver。
第二类的示例是表示应用程序可能依赖的环境发生变化的事件。假设您的应用依赖于已建立的蓝牙连接。你必须对状态变化做出反应——但前提是你的应用程序处于活动状态。在这种情况下,不需要静态注册的广播接收器。动态注册的会更合理。
还有一些事件甚至不允许您静态注册。一个例子是每分钟广播一次的 Intent.ACTION_TIME_TICK 事件。这是一个明智的决定,因为静态接收器会不必要地耗尽电池。
| 归档时间: |
|
| 查看次数: |
6954 次 |
| 最近记录: |