gpt4 book ai didi

当应用程序未运行时,Android 地理围栏停止工作

转载 作者:行者123 更新时间:2023-11-29 02:40:49 26 4
gpt4 key购买 nike

我正在开发一个使用 Google Geofence API 的 Android 应用程序。当应用程序处于前台时,我的代码似乎工作正常,但一旦应用程序进入暂停状态,地理围栏广播接收器就会停止接收事件。我很确定当应用程序移至后台时地理围栏会被删除,但我不知道为什么会这样。

简而言之,我创建了一个地理围栏列表

Geofence geofence = new Geofence.Builder()
.setRequestId(id)
.setCircularRegion(lat, lng, GEOFENCE_RADIUS)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_DWELL)
.setLoiteringDelay(1000)
.build();
geofences.add(geofence);

然后我创建一个请求

geofenceRequest = new GeofencingRequest.Builder()
.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_DWELL)
.addGeofences(geofences)
.build();

此时我添加地理围栏

LocationServices.GeofencingApi.addGeofences(googleApiClient, request, createGeofencePendingIntent()).setResultCallback(this);

最后我启动广播接收器

String GEOFENCE_ACTION = "gac.broadcast.geofence";
if (geoFencePendingIntent != null)
{
GoogleApiClientManager.setGeofencePendingIntent(geoFencePendingIntent);
return geoFencePendingIntent;
}
Intent intent = new Intent(GEOFENCE_ACTION);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), GEOFENCE_REQ_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
GoogleApiClientManager.setGeofencePendingIntent(pendingIntent);
return pendingIntent;

正如我已经说过的,在前台运行时一切正常,但一旦应用程序移至后台,地理围栏事件就会停止发送到接收器。

ADDITIONAL INFOS(与广播接收器问题无关):我尝试执行以下操作:

  • 我启动了 map fragment ,地理围栏工作正常,所以应用程序显示了一条通知
  • 我转到主屏幕,所以应用程序转到暂停状态,不再收到通知
  • 我回到应用程序,检查位置更新和 google api 客户端是否仍在工作,它们确实在工作
  • 最后地理围栏不再起作用了

希望一切都清楚,并且有人可以帮助我。提前致谢

最佳答案

实际上问题在于定义接收者的 Intent 。

我变了

Intent intent = new Intent(GEOFENCE_ACTION);

Intent intent = new Intent(context, GeofenceBroadcastReceiver.class);

现在接收者在后台和前台都会收到通知。希望这也能帮助其他人。

关于当应用程序未运行时,Android 地理围栏停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294531/

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