Are Android geofences surviving a reboot?

后端 未结 3 1325
悲&欢浪女
悲&欢浪女 2020-12-15 22:01

is the system persisting them or do I have to add them again them after reboot? I have not found anything about that in the documentation at https://developer.android.com/tr

相关标签:
3条回答
  • 2020-12-15 22:05

    Which data do you want to persist? Is it the geofence region in your device or the geofence region stored by Google Play Service Location API ?

    I believe the device need to register a region (defined by its latitude, longitude and radius) to Google Play Service (via LocationClient). You also need to provide expiration time, transition type you want to be notified, and the Intent from which you will be notified.

    This region will be stored (remotely) not in your App. When it pass its expiration time, Google Play Service will automatically remove it. You can also set it as NEVER_EXPIRE. If the region is not expired yet, Google Play Service will notify your App (via intent that you send when calling addGeofences).

    The source of the region (lat, long, radius) is up to your implementation.

    0 讨论(0)
  • 2020-12-15 22:06

    I haven't found any documentation confirming this, but my own experiments have shown that they are not persisted across reboots.

    My setup was as follows:

    • Run application
    • Application sets up various geofences on first launch only as NEVER_EXPIRE
    • Exit application
    • Use phone in regions marked by fences
    • Confirm fences trigger pending intents which are sent to IntentService
    • Leave region
    • Reboot phone
    • Re-enter region
    • Pending intent does not get sent to IntentService

    If anyone has more information on this from someone at Google please comment!

    0 讨论(0)
  • 2020-12-15 22:27

    Geofences will not persist on reboot.

    You have to listen for BOOT_COMPLETED action and add geofences again.

    Note: If your app installed on external storage(SD card), you will never receive Boot Complete action. So you have to specify android:installLocation="internalOnly" in the manifest tag. This is because, android device will broadcast BOOT_COMPLETED action before setting up the external storage.

    0 讨论(0)
提交回复
热议问题