android - Android 中的 *Window focus* 什么时候改变?

标签 android android-activity focus window

在我的项目中,我需要捕捉窗口焦点的变化。我已经记录了 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/

相关文章:

安卓 Firebase 消息 : How Update UI from onMessageReceived()

java - 在 Android 中,当应用程序首次在手机上启动时, Activity 前会出现白屏

android - 如何获取timePicker和System Time的时间差

java - 是否可以从另一个类访问非静态类的实例

android - 在 android 1.6 中启动一个没有过渡动画的新 Activity

java - 在 OnFocusChanged Listener 中保持对 Edittext 的关注

java - 如何判断 editText 是否处于焦点?

c# - 在焦点范围内使用列表框

java - 类类型引用未在 java 泛型类或方法中传递

java - 将 fragment 代码和MainActivity代码分开