Ответ 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 нечасто и на короткие промежутки времени. Они складываются с точки зрения использования батареи. Приобретайте свой замок, делайте свой бизнес и выпускайте как можно скорее.