应用程序被杀时,Android广播接收器无法监听

时间:2016-05-20 19:56:06

标签: android receiver

通过清单文件还是通过代码注册广播接收器有什么利弊?

我通过代码注册我的接收器,以便用户可以选择启动和停止它,不知何故,我注意到接收器没有“听”'当应用程序被杀时。

这是正常的吗?

感谢。

1 个答案:

答案 0 :(得分:2)

是的,这是正常的。您通过代码注册了活动广播,app也被杀死并播放。 如果你希望你的广播有效,当app没有启动时,在AndroidManifest文件中定义广播。

如果您希望您的用户可以“取消注册”广播,您可以为onRecieve功能添加额外的逻辑。

当您向用户“取消注册”接收器时,只需将其保存在您的首选项或数据库中,无论如何,并在工作之前检查此值:

@Override public void onReceive(Context context, Intent intent) {
    boolean isUnregisteredByUser = getSharedPreferences("MyPrefs", context.MODE_PRIVATE)
        .getBoolean("IS_UNREGISTERED", false);

    if(!isUnregisteredByUser){
        /* do stuff, handle intent etc */
    }
}

这很简单,但也许不好......