设备重新启动后,地理围栏在android中保持活动状态

我正在编写一个应用程序,当有人在安装的应用程序的生命周期内进入/退出多个站点时,需要使用geofencing

我第一次安装应用程序时,我的geofencing实现(非常类似于下面的第二个链接),在移入/移出地理围栏时以及使用模拟位置进行模拟时,都可以正常工作,直到设备重新启动。

在重新启动时,不论是模拟位置还是实际进出地理围栏,似乎都会触发事件,并将未决意图激活到我的广播接收器。

我已经看了下面的三个链接,也阅读了很多文档,但我无法find一个明确的答案,直接说注册的地理栅栏在重新启动后仍然存在或不存在。

这些是我在堆栈溢出回顾的链接: 是否Android地理位置生存重新启动?

Android Geofence最终会停止获得转换意图

Android地理围栏是否保持活动状态,直到移除/过期或者直到我的PendingIntent启动

如果任何人知道答案,他们是否坚持周围后重启,或有一个工作,如果他们不这样做,将不胜感激! 我目前的最后一个希望是创build一个BOOT_COMPLETED的监听器,并在启动时重新注册它们,但是如果绝对必要的话,我更喜欢这样做。

提前感谢!

编辑:虽然我还没有find一个明确的(书面)的答案,我很确定TonyC先生张贴的是正确的,并select了解决scheme。 非常感谢TonyC!

如果有人想要查看我的解决scheme,那么在设备启动时,我会监听启动完成操作,然后重新注册所需的全部地理位置。

这是清单:

<!-- Listen for the device starting up --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <receiver android:name="com.YOUR.PACKAGE.geofence.BootCompleteReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> 

然后为它创build一个广播接收器,它将在启动时重新注册地理栅栏:

 package com.YOUR.PACKAGE.geofence; import android.app.PendingIntent.CanceledException; import android.content.Context; import android.content.Intent; import android.support.v4.content.WakefulBroadcastReceiver; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.location.Geofence; public class BootCompleteReceiver extends WakefulBroadcastReceiver { private static final String TAG = "BootCompleteReceiver"; @Override public void onReceive(Context context, Intent intent) { //Do what you want/Register Geofences } } 

另外值得注意的是,如果您在引导时位于地理围栏内,那么一旦地理围栏被注册,这通常会触发地理围栏的等待意图。

因此,如果地理围栏启动了一个应用程序,那么当您启动恰好位于地理围栏中的设备时,一旦引导完成的广播接收器注册了地理围栏,位置服务就已经解决了您的位置是。

希望对某人有所帮助。

Solutions Collecting From Web of "设备重新启动后,地理围栏在android中保持活动状态"

根据我的经验,地理栅栏无法在重新启动后存活。 按照您的build议,我使用BOOT_COMPLETED接收器。 它工作正常。