gpt4 book ai didi

Android 将 BroadcastReceiver 保持在后台

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:29 26 4
gpt4 key购买 nike

我创建了一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com