Частичный WakeLock - это то, что вы хотите. Он будет держать процессор открытым, даже если экран выключен.
Для приобретения:
PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
Выпустить:
wakeLock.release();
WakeLock также поддерживает подсчет ссылок, поэтому в вашем сервисе может быть несколько вещей, требующих функции пробуждения, и устройство может бездействовать, когда ни один из них не активен.
На что нужно обратить внимание:
Если вы используете подсчет ссылок, убедитесь, что все пути управления через ваше приложение будут правильно получать / освобождать ... наконец, блоки пригодятся здесь.
Также обязательно удерживайте WakeLocks нечасто и в течение коротких периодов времени. Они складываются с точки зрения использования батареи. Приобретите замок, займитесь своими делами и отпустите как можно скорее.