У меня в приложении написано следующее.
В активити:
protected void onCreate(Bundle savedInstanceState) {
if (firstCreate) {
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
MyService.wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"My WakeLock");
MyService.wakeLock.acquire();
}
<...>
}
И в манифесте:
<uses-permission
android:name="android.permission.WAKE_LOCK" />
Итак, запустив приложение, которое выполняет разные «вычисления» используя где-то 50-100Мб озу, я его сворачиваю. Всё хорошо, так как для вычислений я использую Сервис переднего плана, да и ограничения фоновой активности убраны.
Но, выключив экран смартфона и оставив его в стороне минут на 15, я его снова включаю. И к удивлению обнаруживаю, что сервис уничтожен: уведомления то нет и все данные в приложении потеряны (это видно по тому в каком виде появляется активити).
С помощью одной программы открываю диспетчер задач и вижу, что после закрытия приложения, процесс всё ещё висит в памяти (пока его не удалю).
До того как я вставил код указанный в начале поста всё было хорошо: после включения экрана смартфона, сервис не бывал уничтоженным, вообщем приложение работало как полагается, хоть и при режиме Doze оно засыпало.
А запуск newWakeLock(), почему-то не дало результата и только испортило приложение.
Если кто знает, как правильно включить «WAKE LOCK», подскажите?!