Белый список оптимизации батареи не мешает Doze откладывать мое приложение

Мое приложение отправляет данные о местоположении GPS на мой сервер каждые 15 минут. Эта функциональность является центральной целью приложения.

Однако регистрация GPS прекращается, когда телефон выключен и не используется. Время между записями GPS какое-то время составляет 15 минут, затем 1 час, 2 часа, 4 часа, 6 часов, затем обратно до 15 минут, когда я двигаю телефон или включаю его.

Похоже, это связано с режимом Doze, который был представлен в Android 6. Я добавил приложение в белый список оптимизации батареи, но это ничего не изменило, несмотря на то, что в документации утверждается обратное.

  1. Почему белый список не помогает в этом случае?
  2. Что я должен делать вместо этого? Будет ли Wakelock через регулярные промежутки времени задерживать и тем самым предотвращать Doze?

    // Request frequent location updates.
    Intent locationUpdateIntent = new Intent(this, StoreLocationService.class);
    locationUpdateIntent.setAction(MyAwesomeActionName);
    
    LocationRequest locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationRequest.setInterval(15 * 60 * 1000); // 15 minutes
    locationRequest.setFastestInterval(15 * 60 * 1000); // 15 minutes
    
    LocationServices.FusedLocationApi.requestLocationUpdates(
            mGoogleApiClient, locationRequest,
            PendingIntent.getService(this, 0, locationUpdateIntent, 0));
    

person paperduck    schedule 13.09.2017    source источник


Ответы (1)


Белый список разрешает сеть, но по-прежнему блокирует некоторую активность процессора. Используйте setAlarmAndAllowWhileIdle(), чтобы разрешить использование ЦП для приложения из белого списка.

Дополнительные параметры упоминаются в этой документации:

https://developer.android.com/training/monitoring-device-state/doze-standby.html#understand_app_standby

person paperduck    schedule 22.09.2017