У меня есть служба, которая работает в качестве переднего плана службыAndroid сервиса startforeground LocationManager requestLocationUpdates, когда устройство находится в спящем
startForeground(1234, notification);
В этой службе я имею исполняемый, который должен выполняться каждые 15 минут:
private Runnable runnable = new Runnable()
{
@Override
public void run()
{
Log.d("maw", "Gps::run");
if (Constants.checkInternet(getApplicationContext())) checkSheet();
handler.postDelayed(this, Constants.REFRESH_TIME);
}
};
Когда устройство подключено к интернету, он выполняет метод checkSheet(). Этот метод проверяет некоторые вещи на сервере, и в зависимости от результата он запускает GPS и отслеживает местоположение устройства.
locationMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_TIME, GPS_DISTANCE, this);
Теперь ... В наших тестах все это работает нормально. Но у пользователей есть проблемы, потому что иногда они видят только часы трассировки после того, как он должен начать вести журнал.
Теперь вопрос заключается в том, что за этим стоит. Я предполагаю, что они не используют свои устройства так же, как наши устройства и устройства собираются в спящий режим наши тестовые устройства никогда не войти, потому что мы используем устройства чаще
Некоторые вопросы: Для переднего плана обслуживания: - Запускает ли Runnable каждые 15 минут, когда устройство переходит в режим более глубокого спящего режима? - Невозможно ли инициализировать locationManager.requestLocationUpdates, когда устройство находится в режиме более глубокого спящего режима?
Почему бы не использовать блокировку слежения? [PowerManager.WakeLock] (http://developer.android.com/reference/android/os/PowerManager.WakeLock.html) – Utisevalec
вы должны принять свой ответ –