什么时候*Window焦点*会在Android中发生变化?

Mat*_*ieu 9 android focus window android-activity

在我的项目中,我需要捕捉Window焦点的变化.我已经记录了活动所有阶段的结果.屏幕打开时,结果如下:

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
Run Code Online (Sandbox Code Playgroud)

onWindowFocusChanged是Activity类提供的方法.并且列表中显示的值是onWindowFocusChanged方法的输入值(boolean hasFocus).

我使用以下代码来获取方法的每个状态,onCreate,onStart等的窗口焦点状态.

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

但是在Android文档中,我读到:当活动开始与用户交互时,调用 onResume()方法.此时,您的活动位于活动堆栈的顶部,用户输入转到活动堆栈.

因此,通过这种方式,我应该在onResume中获得窗口焦点的"True",但不能在onPause()中获得.任何人都知道为什么会这样?

Foa*_*Guy 11

我对它的理解与你说的完全相反.onResume()在您的活动获得焦点之前被调用,而onPause在它失去焦点之前被调用.我本来可以发誓我在某处找到它但我似乎无法找到我在Activity Lifecycle文档中看到它的位置

  • 来自[the docs](http://developer.android.com/reference/android/app/Activity.html#onWindowFocusChanged%28boolean%29):_"请注意,这提供了有关全局焦点状态的信息,该状态是独立于因此,虽然焦点更改通常与生命周期更改有一些关系(停止的活动通常不会以窗口为焦点),但您不应该依赖此处的回调与其他生命周期方法中的回调之间的任何特定顺序.例如onResume()."_ (3认同)