从最近列表中刷应用程序后,BroadcastReceiver 不工作

BroadcastReceiver is not working after swiping app from recents list

我正在开发互联网通话应用程序。在我的应用程序中,当应用程序接收到带有某些特定键的 FCM 数据消息时,我使用 BroadcastReceiver 来调用调用屏幕。通常工作正常,但如果我从最近的应用程序列表中刷出我的应用程序,它就无法正常工作。似乎我的 BroadcastReceiver 在刷完应用程序后停止工作,因为所有 FCM 服务仍然存在并且它也接收 FCM 消息并也在 logcat 中显示。

我正在 java 代码中注册我的广播接收器(清单中不是)。

我使用服务 class 来注册广播接收器并覆盖 onTaskRemoved() 并使用 AlarmManager 来保持服务 运行 但它也不起作用。

为什么 BroadcastReceiver 不会被解雇以及如何解决问题?

I am registering my broadcast receiver in java code (not in manifest).

这就是您遇到问题的原因。当用户从最近列表中滑走您的应用程序时,您的应用程序的进程就会被销毁。因此,你的BroadcastReceiver也被摧毁了。

AndroidManifest 中注册您的 BroadcastReceiver,然后 onReceive() 将被调用,无论您的应用是否有 运行 进程。