我试图了解在 Manifest 中注册 BroadcastReceiver 和以编程方式注册之间的主要区别......
我的理解基本上如下(如果我遗漏了什么,将不胜感激有人纠正我的观点)。
在清单中注册:
- 如果需要,操作系统会神奇地找到并实例化你的类,调用 onReceive() 方法,不管你的应用程序的运行状态是什么
- 您的接收只会在每个广播中被调用一次(即您可以认为在清单中注册就像注册您的“类”以接收广播 - 并且广播会根据需要实例化您的类)(??)
以编程方式注册:
- 在代码中注册意味着您正在注册您的类的实例以接收广播消息(即,如果您的代码有点草率,并且您设法注册了多次,您最终会得到多个 BroadcastReceiver 实例,它们都调用了 onReceive()广播
- 要注销,您需要注销您之前注册的特定 BroadcastReceiver 实例
- 如果您的应用程序被操作系统破坏,您的 onReceive() 方法将不会被调用以进行广播
谢谢