Android, активен ли Wake Lock когда в дыре приложения?

У меня есть некоторые действия в моей заявке. В основной деятельности я определил блокировку следа:

PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");

и выпустил его в onPause() метод. У меня вопрос, активен ли он во всем приложении? или мне нужно копировать / вставлять его в каждое действие, которое у меня есть?

Спасибо

1 ответ

Решение

До тех пор, пока WakeLock приобретен, так долго удерживается WakeLock. С этим связано время жизни вашего объекта WakeLock. И если WakeLock больше не используется, и он GC'd, все еще имея блокировку, он освобождается во время сборки мусора (в методе finalize()).

Таким образом, ваша активная блокировка активна между acqu () и release(). Вы должны убедиться, что ваш код вызывает эти функции, когда это необходимо из желаемых действий.

Если вы хотите использовать WakeLock глобально в своем приложении, расширьте android.app.Application, укажите его в манифесте и управляйте блокировкой пробуждения на уровне приложения.

Другие вопросы по тегам