Activity.OnWindowFocusChanged(Boolean) 方法

定义

当活动的当前 Window 获得或失去焦点时调用。

[Android.Runtime.Register("onWindowFocusChanged", "(Z)V", "GetOnWindowFocusChanged_ZHandler")]
public virtual void OnWindowFocusChanged (bool hasFocus);
[<Android.Runtime.Register("onWindowFocusChanged", "(Z)V", "GetOnWindowFocusChanged_ZHandler")>]
abstract member OnWindowFocusChanged : bool -> unit
override this.OnWindowFocusChanged : bool -> unit

参数

hasFocus
Boolean

此活动的窗口是否具有焦点。

实现

属性

注解

当活动的当前 Window 获得或失去焦点时调用。 这是此活动是否是用户主动交互的实体的最佳指标。 默认实现清除密钥跟踪状态,因此应始终调用 。

请注意,这会提供有关全局焦点状态的信息,该状态独立于活动生命周期进行管理。 因此,虽然焦点更改通常与生命周期更改有一定关系, (停止的活动通常不会) 获取窗口焦点,但不应依赖此处的回调和其他生命周期方法(例如 #onResume)中的回调之间的任何特定顺序。

但是,作为一般规则,前台活动将具有窗口焦点...除非它显示具有输入焦点的其他对话框或弹出窗口,在这种情况下,当其他窗口具有焦点时,活动本身将没有焦点。 同样,系统可能会显示系统级窗口 (,例如状态栏通知面板或系统警报) 这将暂时获取窗口输入焦点,而无需暂停前台活动。

android.os.Build.VERSION_CODES#Q 开始,可以在多窗口模式下同时有多个恢复的活动,因此即使上面没有覆盖,恢复状态也不能保证窗口焦点。

如果目的是知道活动何时是最活跃的活动,则应使用用户在所有活动中最后与之交互但不包括非活动窗口(如对话框和弹出窗口 #onTopResumedActivityChanged(boolean) )的活动。 在 之前的 android.os.Build.VERSION_CODES#Q平台版本中, #onResume 是最佳指示器。

android.app.Activity.onWindowFocusChanged(boolean)Java 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

适用于

另请参阅