2013-05-07 3 views
0

У меня есть служба, которая работает в качестве переднего плана службы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, когда устройство находится в режиме более глубокого спящего режима?

+0

Почему бы не использовать блокировку слежения? [PowerManager.WakeLock] (http://developer.android.com/reference/android/os/PowerManager.WakeLock.html) – Utisevalec

+0

вы должны принять свой ответ –

ответ

1

Попробуйте использовать AlarmManager, поэтому ваш сервис должен быть только в памяти, когда он фактически выполняет работу. Или вы можете использовать wakelock.

+0

Служба фактически работает почти все время. Каждые 15 минут служба делает вещи. Проверка того, что GPS должен быть включен, и включить его - всего лишь 1 вещь. – Knarf

0

После многих испытаний казалось, что runnable иногда разбился и полностью прекратил работу.

После исправления этой проблемы теперь кажется, что для службы переднего плана Runnable продолжает работать, а locationManager.requestLocationUpdates делает то, что он должен делать.

Смежные вопросы