后台执行Broadcast Receiver onReceive代码

Execute Broadcast Receiver onReceive code from the background

我正在使用 GEOfencing API 开发应用程序。我已经创建了一个地理围栏,每当用户离开已经指定的地理围栏时,广播接收器就会被触发,我可以成功显示一条日志消息。但是,当我的应用程序在后台时,不会触发广播接收器的 onReceive 方法,即使 Geofencing 正在工作,我的 onReceive 方法只会在我在前台打开应用程序时触发。这在后台如何实现?

您可以使用WorkManager来安排任务。

WorkManager is an API that makes it easy to schedule deferrable, asynchronous tasks that are expected to run even if the app exits or the device restarts. The WorkManager API is a suitable and recommended replacement for all previous Android background scheduling APIs, including FirebaseJobDispatcher, GcmNetworkManager, and Job Scheduler.

应用在background.

时也可以触发广播监听

查看 link 以使用 AlarmManager 实现 WorkManager,您将大致了解整个过程的工作原理。

Click here

我明白了。 问题出在 Android 模拟器上。当我触发地理围栏时(当我的应用程序处于后台时),我没有收到来自广播接收器的日志消息,因为 Android 模拟器中存在 BUG。您需要打开 Google 地图应用程序才能在后台从您的应用程序接收来自地理围栏的触发器。

这是一个奇怪的错误,我调试了几天才弄明白。