我创建了一个 BroadcastReceiver,它仅在我的应用程序显示在最近的应用程序菜单中时运行。如果我从最近的应用程序中删除我的应用程序,BroadcastReceiver 将停止工作。 如何让 BroadcastReceiver 保持在后台?
我从我的主要 Activity (在 OnCreate() 中)注册了 BroadcastReceiver。
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(receiver, intentFilter);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
}
};
最佳答案
这不是注册接收器的方式。你的接收器停止工作,因为你在 onCreate 中构建它,这意味着只要你的应用程序存在,它就会存在。当应用程序被销毁时,您也会失去接收器。
如果您在 Activity 中注册接收器,您应该始终在 onResume 中注册它并取消注册 onPause,这将使它在 Activity 对用户可见时可用。这是一个用例,当您希望在用户与 Activity 交互时拥有一个 Activity 的接收器。
如果你想要一个后台接收器,你需要在 AndroidManifest
中注册它(带有 intent 过滤器),添加一个 IntentService
并在你收到广播时启动它接收者。
这是一个tutorial ,您对第 3 章感兴趣。
如果您需要始终在线,请启动前台服务。服务中有一个功能可以让你:startForeground .然后在创建服务时注册您的接收器,并在它被销毁时注销。前台服务虽然很讨厌。
关于Android 将 BroadcastReceiver 保持在后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22257310/