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, укажите его в манифесте и управляйте блокировкой пробуждения на уровне приложения.