当前位置 : 主页 > 手机开发 > android >

Android在后台保留BroadcastReceiver

来源:互联网 收集:自由互联 发布时间:2021-06-11
我创建了一个BroadcastReceiver,它只在最近的应用程序菜单中显示我的应用程序时运行.如果我从最近的应用程序中删除我的应用程序,BroadcastReceiver将停止工作. 如何将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.然后在创建服务时注册你的接收器,并在它被销毁时取消注册.前台服务虽然很糟糕.

网友评论