在我的项目中,我需要捕捉窗口焦点的变化。我已经记录了 Activity 所有阶段的结果。亮屏时,结果如下:
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 提供的方法。而列表中显示的值是onWindowFocusChanged方法的输入值(boolean hasFocus)。
我使用以下代码获取方法的每个状态、onCreate、onStart 等的窗口焦点状态。
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onCreate screen state : "+String.valueOf(this.hasWindowFocus()));
}
但在 Android 文档中,我读到:onResume() 方法 在 Activity 开始与用户交互时调用。此时,您的 Activity 位于 Activity 堆栈的顶部,用户输入将进入它。
所以在这种情况下,我应该在 onResume 中获得窗口焦点的“True”,但在 onPause() 中则不然。任何人都知道为什么会发生这种情况?
最佳答案
我的理解和你说的相反。 onResume() 在您的 Activity 获得焦点之前被调用,而 onPause 在它失去焦点之前被调用。我可以发誓我在某个地方以这种方式阅读它,但我似乎无法找到我在 Activity Lifecycle documentation 中看到它的地方。
关于android - Android 中的 *Window focus* 什么时候改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5025311/