Подтвердить что ты не робот

Как я могу сохранить работу своего Android-сервиса, когда экран выключен?

Когда экран выключится, моя служба приложений приостановлена.

Я запускаю свою службу со следующим кодом:

if (mSharedPrefs.getBoolean("prefAutoUpdatesMain", false)) {
     Intent svc = new Intent(this, MyService.class);
     startService(svc);
}

Как я могу избежать паузы службы?


Что мне нужно сделать в MyService - это загрузить некоторые данные из Интернета. Если я понял, что должен выполнить следующий процесс:

  • Приобретение wakeLock
  • Загрузка данных
  • Release wakeLock

При загрузке метода данных нет ссылки на wakeLock, это приложение имеет wakeLock, правильно ли оно?

Блокировки по вторникам считаются по умолчанию. Я думаю, что лучше wakeLock без подсчета ссылок, чтобы его освободить, я не прав?

4b9b3361

Ответ 1

Частичный WakeLock - это то, что вы хотите. Он будет удерживать процессор открытым, даже если экран выключен.

Чтобы приобрести:

PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();

Выпустить:

wakeLock.release();

WakeLock также поддерживает подсчет ссылок, поэтому у вас может быть несколько вещей в вашем сервисе, которые требуют функции пробуждения, и устройство может спать, когда никто из них не активен.

Остерегайтесь:

Если вы используете подсчет ссылок, убедитесь, что все пути управления через ваше приложение будут правильно получать/выпускать... наконец-то здесь могут быть полезны блоки.

Также не забудьте удерживать WakeLocks нечасто и на короткие промежутки времени. Они складываются с точки зрения использования батареи. Приобретайте свой замок, делайте свой бизнес и выпускайте как можно скорее.

Ответ 3

Я просто использую службу foregrgound.