从后台执行广播接收器onReceive代码

问题描述 投票:0回答:4

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

android kotlin android-geofence
4个回答
0
投票

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

WorkManager 是一个 API,可以轻松安排可延迟的异步任务,即使应用程序退出或设备重新启动,这些任务也有望运行。 WorkManager API 是所有以前的 Android 后台调度 API 的合适且推荐的替代品,包括 FirebaseJobDispatcher、GcmNetworkManager 和 Job Scheduler。


0
投票

当应用程序处于

background
时也可以触发广播监听器。

使用

WorkManager
查看实现
AlarmManager
的链接,您将大致了解整个事情是如何工作的。

点击这里


0
投票

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

这是一个奇怪的错误,我花了几天的时间调试才弄清楚。


0
投票

请问您这个问题解决了吗?我也有同样的问题。我想在收到网络变化后执行onreceive中的代码。

© www.soinside.com 2019 - 2024. All rights reserved.