我试图理解在Manifest中注册BroadcastReceiver和以编程方式注册它之间的主要区别...
我的理解基本如下(如果我遗漏了某些东西,我会感谢有人纠正我的观点).
在Manifest中注册:
- 如果需要,操作系统将神奇地查找并实例化您的类,调用onReceive()方法,无论您的应用程序的运行状态是什么
- 您的接收只会在每次广播时被呼叫一次(即您可以认为在清单中注册就像注册您的"班级"以接收广播一样 - 并且广播会根据需要实例化您的班级)(??)
以编程方式注册:
- 在代码中注册意味着您正在注册您的类的实例以接收广播消息(即,如果您的代码有点草率,并且您设法多次注册,则最终会有多个BroadcastReceiver实例都调用其onReceive()广播
- 要取消注册,您需要取消注册先前注册的特定BroadcastReceiver实例
- 如果您的应用程序被操作系统销毁,则不会为广播调用onReceive()方法
谢谢