0

所以我创建了如下地理围栏:

    GeofenceModel modelExit = new GeofenceModel.Builder("id_oi_456")
                .setTransition(Geofence.GEOFENCE_TRANSITION_DWELL)
                .setExpiration(Geofence.NEVER_EXPIRE)
                .setLatitude(40.414341)
                .setLongitude(49.928548)
                .setRadius(CLIENT_GEOFENCE_RADIUS)
                .build();


    SmartLocation.with(this).geofencing()
                .add(modelExit)
                .start(this);

我运行此代码一次,它在居住在地理围栏内时触发(如预期的那样)。然后我删除片段并重新运行项目。但是这次即使我设置了 NEVER_EXPIRE 也没有触发地理围栏。所以基本上我想知道的是地理围栏存储在哪里。如果它们存储在应用程序内存之外,那么为什么“删除片段”会清除地理围栏?

4

1 回答 1

3

我认为它按预期工作。重新运行的项目会将应用程序视为全新安装。如文档中所述 -使用地理围栏的最佳实践

如果在以下事件之后仍然需要地理围栏,应用程序必须重新注册地理围栏,因为在以下情况下系统无法恢复地理围栏:

  • 设备重新启动。应用程序应侦听设备的启动完成操作,然后重新注册所需的地理围栏。
  • 该应用程序被卸载并重新安装。
  • 应用程序的数据被清除。
  • Google Play 服务数据被清除。
  • 该应用已收到 GEOFENCE_NOT_AVAILABLE 警报。这通常发生在 NLP(Android 的网络位置提供程序)被禁用之后。

希望这可以帮助。

于 2017-06-02T16:51:24.300 回答