Android在后台保留BroadcastReceiver
作者:互联网
我创建了一个BroadcastReceiver,它只在最近的应用程序菜单中显示我的应用程序时运行.如果我从最近的应用程序中删除我的应用程序,BroadcastReceiver将停止工作.
如何将BroadcastReceiver保留在后台?
我从我的主要活动(在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中构建它,这意味着只要您的应用程序处于活动状态,它就会存在.当应用程序被破坏时,您也会失去接收器.
如果在活动中注册接收者,则应始终在onResume中注册它并取消注册onPause,这将使活动对用户可见时可用.当您希望在用户与活动交互时拥有活动接收器时,这是一个用例.
如果你想要一个后台接收器,你需要在AndroidManifest(使用intent过滤器)中注册它,添加一个IntentService并在接收器中接收广播时启动它.
这是一个tutorial,你对第3章感兴趣.
如果您需要始终打开,请启动前台服务.服务中有一个功能可以让你:startForeground.然后在创建服务时注册你的接收器,并在它被销毁时取消注册.前台服务虽然很糟糕.
标签:android-broadcast,android,android-service,broadcastreceiver,background-process 来源: https://codeday.me/bug/20190728/1563345.html