返回顶部
首页 > 资讯 > 精选 >android 窗口焦点介绍
  • 442
分享到

android 窗口焦点介绍

android 2023-08-21 20:08:14 442人浏览 泡泡鱼
摘要

背景 我们经常会遇到一种Application does not hava focused window的ANR异常,这种异常一般是没有焦点窗口FocusedWindow导致,且这类异常只会发生在key事件的派发,因为key事件是需要找到一

背景

我们经常会遇到一种Application does not hava focused windowANR异常,这种异常一般是没有焦点窗口FocusedWindow导致,且这类异常只会发生在key事件的派发,因为key事件是需要找到一个焦点窗口然后再派发,而触摸事件只需要找到当前显示的窗口即可

焦点窗口设定

在这里插入图片描述WMS只管理窗口,无法确定是否有窗口盖住当前画面
SurfaceFlinger管理显示,最贴近于用户看到的画面,可以知道可以知道是否有窗口盖住当前画面,根据真实的显示窗口设置对应的window信息给InputDispatcher

关键日志

window

在dumpsys window中查看mCurrentFocus和mFocusedApp

  mCurrentFocus=Window{f96644 u0 NotificationShade}  mFocusedApp=ActivityRecord{e9566ee u0 com.Android.launcher3/.uioverrides.QuickstepLauncher} t12}

mCurrentFocus指的是当前的焦点窗口
mFocusedApp指的是当前的焦点Activity

查看有没有LAST ANR

WINDOW MANAGER LAST ANR (dumpsys window lastanr)  <no ANR has occurred since boot>

这里没有LAST ANR,如果有,mCurrentFocus会显示null

SurfaceFlinger

在dumpsys SurfaceFlinger中查看 HWC layers

Display 4619827259835644672 (active) HWC layers:--------------------------------------------------------------------------------------------------------------------------------------------------------------- Layer name           Z |  Window Type |  Comp Type |  TransfORM |   Disp Frame (LTRB) |          Source Crop (LTRB) |     Frame Rate (Explicit) (Seamlessness) [Focused]--------------------------------------------------------------------------------------------------------------------------------------------------------------- com.example.mysystemdialog/com.example.mysystemdialog.MainActivity#118  rel      0 |            1 |     CLIENT |          0 |    0    0 1440 2960 |    0.0    0.0 1440.0 2960.0 |                  [*]--------------------------------------------------------------------------------------------------------------------------------------------------------------- StatusBar#75  rel      0 |         2000 |     CLIENT |          0 |    0    0 1440   84 |    0.0    0.0 1440.0   84.0 |                  [ ]--------------------------------------------------------------------------------------------------------------------------------------------------------------- NavigationBar0#74  rel      0 |         2019 |     CLIENT |          0 |    0 2792 1440 2960 |    0.0    0.0 1440.0  168.0 |                  [ ]---------------------------------------------------------------------------------------------------------------------------------------------------------------

[Focused]这一列有带[*]号,则说明是焦点窗口

input

在dumpsys input中查看FocusedApplications和Focusedwindows

  FocusedApplications:    displayId=0, name='ActivityRecord{e9566ee u0 com.android.launcher3/.uioverrides.QuickstepLauncher} t12}', dispatchingTimeout=5000ms  FocusedWindows:    displayId=0, name='f96644 NotificationShade'

如果发生ANR,焦点窗口以dumpsys input为主

Input Dispatcher State at time of last ANR:ANR:Time:......Reason:......Window:......FocusedApplications:......FocusedWindows: <none>

event log

05-18 19:22:55.806   580   607 I input_focus: [Focus request f96644 NotificationShade,reason=UpdateInputWindows]05-18 19:22:55.837   580   675 I input_focus: [Focus leaving e225d94 com.android.launcher3/com.android.launcher3.uioverrides.QuickstepLauncher (server),reason=Waiting for window because NO_WINDOW]05-18 19:22:55.855   580   675 I input_focus: [Focus entering f96644 NotificationShade (server),reason=Window became focusable. Previous reason: NOT_VISIBLE]

requestentering正常情况下是一一对应,打印了entering则表示真正的焦点已经进入到对应的窗口
发生Application does not hava focused window时,一般request 有打印,我们可以通过是否有entering的打印来分析
1.entering部分有打印,代表焦点已经在input里面,但是仍然有ANR,就需要从input等方面分析
2.entering部分未打印,代表input没有被触发焦点窗口设置到input,需排查SurfaceFlinger或WMS

来源地址:https://blog.csdn.net/yimelancholy/article/details/130751737

--结束END--

本文标题: android 窗口焦点介绍

本文链接: https://lsjlt.com/news/377187.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • android 窗口焦点介绍
    背景 我们经常会遇到一种Application does not hava focused window的ANR异常,这种异常一般是没有焦点窗口FocusedWindow导致,且这类异常只会发生在key事件的派发,因为key事件是需要找到一...
    99+
    2023-08-21
    android
  • JavaScript中document.activeELement焦点元素介绍
    目录1、默认焦点在body2、文本框手动获取焦点3、通过focus获取焦点4、tab切换焦点5、document.hasFocus()判断是否获取焦点前言: 有时需要获取页面焦点在哪...
    99+
    2024-04-02
  • 如何使用window.onfocus和window.onblur来实现窗口焦点
    如何使用window.onfocus和window.onblur来实现窗口焦点,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。当前窗口获得焦点js事件,html5发布之前我们...
    99+
    2023-06-07
  • 怎么使messagebox弹出后不获取窗口焦点
    要使MessageBox弹出后不获取窗口焦点,可以通过以下两种方法实现:1. 使用MessageBoxOptions参数:```cs...
    99+
    2023-08-08
    messagebox
  • 如何使 messagebox 弹出后不获取窗口焦点
    要使messagebox弹出后不获取窗口焦点,可以使用Win32 API中的MessageBox函数,并设置参数为MB_SYSTEM...
    99+
    2023-08-08
    messagebox
  • MySQL窗口函数 PARTITION BY()函数介绍
    前期数据准备 # 创建数据库create database if not exists shopping charset utf8;# 选择数据库use shopping;# 创建产品表create ...
    99+
    2023-09-12
    mysql sql 数据库
  • Android XML数据解析要点介绍
    目录1.XML数据要点介绍2.三种解析XML方法的比较3.SAX解析XML数据4.DOM解析XML数据5.PULL解析XML数据6.代码示例下载:1.XML数据要点介绍 首先我们来看...
    99+
    2023-05-17
    Android XML数据解析 Android XML
  • Android EditText 获取/失去焦点
    项目的需求中,又一个4位数的验证码界面,小弟才疏学浅,只想到了用线性布局里面放四个EditText。 需求需要输入内容后,自动跳到下一个位置聚焦,删除指定位置后,自动跳到上一个位置聚焦,由于聚焦/非聚焦UI展示得都不同,所以每个editTe...
    99+
    2023-09-05
    android
  • Android TV listview及焦点处理
    Android TV listview及焦点处理Android TV上的listview ,因为没有touch事件,只能通过按键处理,因此,用到listview时需要特殊处理:1.复杂的view需要获取焦点,需要设置:setItemsCan...
    99+
    2023-05-31
    android tv listview
  • Android中回调接口的使用介绍
    MainActivity如下: 代码如下: package cn.testcallback; import android.os.Bundle; import android...
    99+
    2022-06-06
    回调 接口 Android
  • Android RIL介绍
    文章目录 一、需求二、相关概念2.1 IMS2.2 Volte2.3 CS域与PS域2.3.1 CS域2.3.2 PS域 2.4 VOIP2.5 URC消息2.6 HIDL 三、环境...
    99+
    2023-09-29
    android 开发语言 java
  • Android dumpsys介绍
    文章目录 一、需求二、环境三、相关概念3.1 dumpsys3.2 Binder3.3 管道 四、dumpsys指令的使用4.1 dumpsys使用4.2 dumpsys指令语法 五、...
    99+
    2023-10-26
    1024程序员节
  • Android窗口机制
    DecorView通过PhoneWindow与WindowManagerService通信原理图 每个Activity都有一个Window对象...
    99+
    2022-06-06
    Android
  • TypeScript接口介绍
    目录1.接口的定义 2.属性 2.1可选属性 2.2只读属性 3.类类型 3.1继承接口 4.函数类型 前言: TS的核心原则之一就是对所具有的结构 进行类型检查。接口的作用就是为...
    99+
    2024-04-02
  • SQL 窗口函数简介
    目录一、什么是窗口函数二、窗口函数的语法2.1 能够作为窗口函数使用的函数三、语法的基本使用方法——使用 RANK 函数四、无需指定 PARTITION BY五、专用窗口函数的种类六、窗口函数的适用范围七、作为窗口函数使用的聚合函数八、计...
    99+
    2014-09-29
    SQL 窗口函数简介
  • Android OpenGl 介绍(一)
    一、OpenGl 介绍 看到这个介绍,相信大家都不会陌生,因为在平时的工作中,或多或少大家都会听说过 openGl 这个东西,而且对它的印象基本都是觉得比较高深难懂。其实这个东西也不是那么难,那么无从下手,首先必须要了解一些基本的背景和搞懂...
    99+
    2023-09-01
    android 实时音视频
  • 怎么用CSS3实现百叶窗焦点图动画
    这篇文章主要介绍“怎么用CSS3实现百叶窗焦点图动画”,在日常操作中,相信很多人在怎么用CSS3实现百叶窗焦点图动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用CSS...
    99+
    2024-04-02
  • android popuwindow点击外部窗口不消失的实例
    网上大多数都是说如何监听点击外部消失,但我遇到的问题是点击外面不让其消失,如下是我的解决方案,关键是:popupMenu.setBackgroundDrawable(null)...
    99+
    2022-06-06
    Android
  • android开发中ListView与Adapter使用要点介绍
    1. Adapter.getView() public View getView(int position, View convertView , ViewGroup pare...
    99+
    2022-06-06
    adapter listview android开发 Android
  • VB.NET窗体编程模式的介绍
    这篇文章主要讲解了“VB.NET窗体编程模式的介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VB.NET窗体编程模式的介绍”吧!VB.NET窗体编程模式到现在为止,我们讨论的只是如何创建...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作