Android手机“点击或滑动屏幕的某块区域,没有反应“案例分析总结

Android手机"点击或滑动屏幕的某块区域,没有反应"案例分析总结

点击屏幕的某块区域,没有反应
1,案例

在桌面短信应用图标附近点击,没有反应。
然后,打开其他应用,点击同样的位置也没有反应

2,调试技巧

在开发者选项中,
分别打开:
"显示点按操作反馈"开关,
"指针位置"开关
和"显示布局边界"开关
把这三个开关打开后,基本上就能断定出是哪里出现了问题。

"显示点按操作反馈"开关的白圆圈表示input的事件是否传到了framework层。
"指针位置"开关的指针位置轨迹的小红点表示input的事件是否传到了应用App层

点击屏幕有"显示点按操作反馈"的白圆圈,但是没有"指针位置"小红点,说明,事件没通过inputchannel发到应用App层。
例如:用手一直点击着王者荣耀,然后旋转屏幕。
此时,在点击或滑动屏幕,就会有该现象。
同理类似推出,如果屏幕上有手指点击Down事件但没有手动Up事件。
也会有该问题。

有的系统应用通过以下方式获取的屏幕事件。
android.hardware.input.IInputManager.aidl中的接口
monitorInput()。该接口就是通过inputchannel发出去的。
而"显示点按操作反馈"的白圆圈是系统层InputReader监听的input事件后绘制的。类似鼠标指针。

抓取input相关log:
$ getevent -l
$ logcat | grep Input
$ logcat | grep ViewRootImpl // 添加相关log后,可以非常方便调试KeyEvent和MotionEvent事件

技巧:
用手点击着屏幕,然后执行dumpsys input,其中的log中有点击的焦点窗口信息。
例如:
  FocusedApplications:
    displayId=0, name='AppWindowToken{e917bf2 token=Token{686b2fd ActivityRecord{4bf8354 u0 com.android.settings/.Settings t3}}}', dispatchingTimeout=5000.000ms
  FocusedWindows:
    displayId=0, name='Window{2ae5226 u0 com.android.settings/com.android.settings.Settings}'
  TouchStatesByDisplay:
    0: down=true, split=true, deviceId=6, source=0x00001002
      Windows:
        0: name='Window{2ae5226 u0 com.android.settings/com.android.settings.Settings}', pointerIds=0x80000000, targetFlags=0x105

3,案例分析

在桌面短信应用图标附近点击,没有反应。
然后,打开其他应用,点击同样的位置也没有反应
经分析:
在开发者选项中,打开“显示布局边界”开关后,
发现在桌面的短信图标的位置附近有2个竖着的图标框,
一直显示在最上层。
所以,点击该区域没有反应,
原因是,虽然该区域没widow显示可视,
但是,通过,打开"显示布局边界"开关后,
(或dumpsy window发现),是系统SystemUI的截图应用App显示的这2个图标,由于截图没有正常截上,且截图window窗口存在但没有正常显示出来,而导致了该问题。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值