Я хочу запустить уведомление в своем приложении в конкретной ситуации только в том случае, если определенное действие не отображается.Определите, что экран блокировки был разблокирован
Мне удалось сделать это, связывая/отвязав службу, когда я создаю и уничтожаю действие (используя onCreate/onDestroy) e, сохраняя логическое значение, если это действие видно через методы onPause/onResume, как следующий код внизу показаны:
public void onCreate(Bundle savedInstanceState) {
// ...
bindService(...);
}
public void onDestroy() {
// ...
unbindService(mConnection);
}
public void onResume() {
// ...
// this method sets to true the Service's boolean which retain Activity's visibility.
mService.registerActivity(true);
}
public void onPause() {
mService.registerActivity(false);
}
И на службе я проверяю это логическое значение, чтобы запустить Уведомление.
Он работает во всех случаях, за исключением определенного: когда приложение открыто в этом мероприятии, но экран блокировки включен.
В некоторых тестах, которые я сделал, при появлении экрана блокировки вызывается метод Activity.onPause. Я надеялся, что метод Activity.onResume был вызван только тогда, когда экран блокировки был разблокирован, но это не то, что происходит. Когда я нажимаю кнопку питания, чтобы вызвать экран блокировки, метод Activity.onResume называется уже. В этом смысле то, что я делаю, неверно.
Как я могу вызвать метод Activity.onResume только тогда, когда пользователь разблокирует экран блокировки? Или ... как я могу определить, что экран блокировки был разблокирован, и пользователь ДЕЙСТВИТЕЛЬНО смотрит на активность?
Будет ли 'Activity.onWindowFocusChanged (boolean hasFocus)' вернуть требуемое значение? – techiServices
@techiУслуги спасибо! Это работало безупречно. Но я не могу принять этот «ответ». Пожалуйста, ответьте на вопрос, чтобы я мог его принять. ОК? – borges
Ответил. Большое спасибо. – techiServices