小编rwm*_*rwm的帖子

BroadcastReceiver的Manifest和Programmatic注册之间的主要区别

我试图理解在Manifest中注册BroadcastReceiver和以编程方式注册它之间的主要区别...

我的理解基本如下(如果我遗漏了某些东西,我会感谢有人纠正我的观点).

  • 在Manifest中注册:

    1. 如果需要,操作系统将神奇地查找并实例化您的类,调用onReceive()方法,无论您的应用程序的运行状态是什么
    2. 您的接收只会在每次广播时被呼叫一次(即您可以认为在清单中注册就像注册您的"班级"以接收广播一样 - 并且广播会根据需要实例化您的班级)(??)
  • 以编程方式注册:

    1. 在代码中注册意味着您正在注册您的类的实例以接收广播消息(即,如果您的代码有点草率,并且您设法多次注册,则最终会有多个BroadcastReceiver实例都调用其onReceive()广播
    2. 要取消注册,您需要取消注册先前注册的特定BroadcastReceiver实例
    3. 如果您的应用程序被操作系统销毁,则不会为广播调用onReceive()方法

谢谢

android broadcastreceiver android-lifecycle

19
推荐指数
2
解决办法
6954
查看次数