Сохраняются ли геозоны в андроиде после перезагрузки устройства
m написание приложения, которое должно использовать геозону, когда кто-то входит / выходит из нескольких сайтов в течение срока службы устанавливаемого приложения.
Моя реализация геозоны (очень похожая на вторую ссылку ниже) работает нормально, когда я впервые устанавливаю приложение, как при входе / выходе из геозон, так и при использовании фиктивных местоположений для имитации, пока устройство не будет перезагружено.
При перезагрузке ни фиктивные местоположения, ни физическое перемещение в геозону и выход из нее, по-видимому, не вызывают событие и инициируют ожидающее намерение для моего широковещательного приемника.
Я посмотрел на следующие три ссылки, а также прочитал довольно много документано я могуЯ не могу найти однозначного ответа на этот вопрос в любом месте, где прямо сказано, что зарегистрированные геозоны сохраняются или не сохраняются после перезагрузки.
Вот ссылки, которые я рассмотрел на переполнение стека:Выжили ли геозоны Android после перезагрузки?
Android Geofence со временем прекратит получать намерения перехода
Если кто-то знает ответ на вопрос, останавливаются ли они после перезагрузки, или имеет обходной путь, если они этого не делают, это будет высоко ценится! Моя последняя надежда в настоящее время - создать прослушиватель для BOOT_COMPLETED и перерегистрировать их при запуске, но id предпочитает делать это только в случае крайней необходимости.
Заранее большое спасибо!
Редактировать: Хотя я не нашел окончательного (в письменном виде) ответа, я почти уверен, что опубликованный Мистером ТониК правильный и выбрал это решение. Большое спасибо TonyC!
Если кто-то захочет увидеть решение, которое у меня есть, я прислушиваюсь к завершению загрузки при загрузке устройства, а затем заново регистрирую все необходимые мне геозоны.
Это в манифесте:
а затем создайте для него широковещательный приемник, который будет перерегистрировать геозоны при загрузке:
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
}
}
Это'Также стоит отметить, что если вы находитесь внутри геозоны при загрузке, это обычно вызывает геозону.с намерением в ожидании после регистрации геозоны.
Так, если, например, геозона запускает приложение, то при загрузке устройства, которое оказывается в геозоне, оно также откроет приложение, как только получатель широковещательной загрузки завершит регистрацию геозоны, и службы определения местоположения будут работать там, где вы являются.
Надеюсь, что это кому-то поможет.