多次登记相同的地理围栏

时间:2014-05-08 18:43:40

标签: android geofencing android-geofence

我想知道,谷歌位置服务如何处理同一地理围栏的多次注册?

我已经读过在以下情况下删除NEVER_EXPIRES地理围栏:

  • 手机重启
  • 网络位置已开启/关闭

并且只在这种情况下列出。

所以,我正在考虑如何克服这种情况,当电话是为了前。无意中重启。我想到了在应用程序启动时再次注册地理围栏。 但是现在,我的问题是,在应用程序重新启动之间实际上已经删除了地理围栏的情况会发生什么?他们会被取代吗? 例如,如果我注册了相同的地理围栏7x,相关的意图将被激活7次或仅一次?

感谢您的建议和更正!

1 个答案:

答案 0 :(得分:2)

如果它能帮助某人,那么回答太迟了:

  

所以,我正在考虑如何克服这种情况,当电话是   对于前无意中重启。

你应该使用广播接收器来监听: android.intent.action.BOOT_COMPLETED(处理重启)AND android.location.PROVIDERS_CHANGED(处理loc开/关)

  

我想到了在应用程序启动时注册地理围栏   试。

没有。尝试重新注册广播接收器中的所有地理围栏,如上所述。您可以启动服务,从上述广播接收器的onReceive重新注册地理围栏。

  

但是现在,我的问题是,如果地理位置会发生什么   应用程序重新启动之间实际上已经删除了什么?他们会吗   被替换?例如,如果我注册相同的地理围栏7x,将   相关意图被解雇7次或只是一次?

无论您注册地理围栏的次数如何,只要您使用相同的requestId,它将被视为单一地理围栏。例如:

 mGeofenceList.add(new Geofence.Builder()
                // Set the request ID of the geofence. This is a string to identify this geofence.
                .setRequestId(requestId)
                .setCircularRegion(latPos, longPos, mRadius)
                .setExpirationDuration(Geofence.NEVER_EXPIRE)
                .setLoiteringDelay(LOITERING_DELAY)
                .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_DWELL)
                .build());