Когда * Фокус окна * изменяется в Android? - PullRequest
8 голосов
/ 17 февраля 2011

В моем проекте мне нужно отследить изменение фокуса окна.Я выписал результаты для всех этапов деятельности.Когда экран включен, результат выглядит следующим образом:

02-17 13:50:03.898: DEBUG/InquiryInterface(3829): onCreate screen state : false
02-17 13:50:03.898: DEBUG/InquiryInterface(3829): onStart screen state : false
02-17 13:50:03.898: DEBUG/InquiryInterface(3829): onResume screen state : false
02-17 13:50:08.998: DEBUG/InquiryInterface(3829): onPause screen state : true
02-17 13:50:09.178: DEBUG/InquiryInterface(3829): onWindowFocusChanged : false
02-17 13:50:09.228: DEBUG/InquiryInterface(3829): onStop screen state : false
02-17 13:50:09.228: DEBUG/InquiryInterface(3829): onDestroy screen state : false

onWindowFocusChanged - метод, предоставленный классом Activity.И значение, показанное в списке, является входным значением (boolean hasFocus) метода onWindowFocusChanged.

Я использовал следующий код для получения состояния фокуса окна для каждого состояния метода, onCreate, onStart,и т.д.

@Override
    public void onResume() {
        super.onResume();
        Log.d(TAG, "onCreate screen state : "
                 +String.valueOf(this.hasWindowFocus()));
}

Но в документации Android я прочитал: метод onResume () имеет значение Вызывается, когда действие начнет взаимодействовать с пользователем.В этот момент ваша активность находится на вершине стека активности, и пользовательский ввод идет в нее.

Таким образом, я должен получить «True» для фокуса окна в onResume, но нев onPause ().У кого-нибудь есть идея, почему это происходит?

Ответы [ 2 ]

11 голосов
/ 17 февраля 2011

Мое понимание этого противоположно тому, что вы говорите.onResume () вызывается непосредственно перед тем, как ваша деятельность получает фокус, а onPause вызывается как раз перед тем, как теряет фокус.Я мог бы поклясться, что где-то читал, но не могу найти то, что увидел в документации Activity Lifecycle

0 голосов
/ 17 февраля 2011

К тому времени, когда вызывается onResume(), ваша деятельность уже сфокусирована. Вот что говорят вам документы.

...