我的应用允许用户在特定位置创建地理围栏。它工作正常,但我似乎无法删除地理围栏。 这是我删除所有地理围栏的代码。
public void removeAllGeofences(GeofenceControllerListener listener) {
namedGeofencesToRemove = new ArrayList<>();
for (NamedGeofence namedGeofence : namedGeofences) {
namedGeofencesToRemove.add(namedGeofence);
}
this.listener = listener;
connectWithCallbacks(connectionRemoveListener);
}
这似乎不起作用,除非我重新启动手机,否则地理围栏仍然存在。 关于地理围栏如何工作的任何帮助或解释都会有所帮助!
答案 0 :(得分:0)
当不再需要或不需要时停止地理围栏监控可以帮助节省设备上的电池电量和CPU周期。您可以在用于add
和remove
地理围栏的主要活动中停止geofence monitoring;移除地理围栏会立即停止。 API提供了通过请求ID或删除与给定PendingIntent关联的地理围栏来移除地理围栏的方法。
以下代码段通过PendingIntent移除地理围栏,当设备进入或退出以前添加的地理围栏时停止所有进一步通知:
LocationServices.GeofencingApi.removeGeofences(
mGoogleApiClient,
// This is the same pending intent that was used in addGeofences().
getGeofencePendingIntent()
).setResultCallback(this); // Result processed in onResult().
}
您可以将地理围栏与其他位置感知功能(例如定期位置更新)结合使用。有关详细信息,请参阅本课程中的其他课程。
要{app>} temporary disable
在应用中某处存储地理围栏参数(例如在sqlite或共享首选项中),然后将其从GeofencingApi
中移除,并在需要时通过addGeofences恢复(重新启用)。
答案 1 :(得分:0)
GeofencingApi已不再使用。 请改用geofencingClient。 因此,您可以在一个功能中删除所有地理围栏。