android 当应用被杀死时广播接收器不监听
android broadcast receiver not listening when app get killed
通过清单文件和代码注册广播接收器的优缺点是什么?
我通过代码注册了我的接收器,以便用户可以选择启动和停止它,不知何故,当应用程序被杀死时,我注意到接收器不是 'listening'。
正常吗?
谢谢。
是的,很正常。您通过代码在 activity 中注册了广播,应用程序被终止并广播了。
如果你想要你的广播作品,当应用程序没有启动时,在 AndroidManifest 文件中定义广播。
如果您希望您的用户可以 "unregister" 广播,您可以在 onRecieve 函数中添加额外的逻辑。
当你让你的用户 "unregister" 接收器时,只需将它保存在你的首选项或数据库中,无论什么,并在工作之前检查这个值:
@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 */
}
}
这是简单的方法,但可能不好...
通过清单文件和代码注册广播接收器的优缺点是什么?
我通过代码注册了我的接收器,以便用户可以选择启动和停止它,不知何故,当应用程序被杀死时,我注意到接收器不是 'listening'。
正常吗?
谢谢。
是的,很正常。您通过代码在 activity 中注册了广播,应用程序被终止并广播了。 如果你想要你的广播作品,当应用程序没有启动时,在 AndroidManifest 文件中定义广播。
如果您希望您的用户可以 "unregister" 广播,您可以在 onRecieve 函数中添加额外的逻辑。
当你让你的用户 "unregister" 接收器时,只需将它保存在你的首选项或数据库中,无论什么,并在工作之前检查这个值:
@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 */
}
}
这是简单的方法,但可能不好...