В моем проекте мне нужно уловить изменение фокуса окна. Я отключил результаты для всех этапов деятельности. Когда экран включен, результат будет следующим:
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. И значение, показанное в списке, является входным значением (логическое 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 (). У кого-нибудь есть идея, почему это происходит?