安卓窗口wms/input小知识NO_INPUT_CHANNEL剖析

背景:

经常在学员的vip技术群里经常有很多学员会提问一些不太常见的窗口和input的相关的问题,虽然不太常见,但确实是工作中会遇到的一些问题,所以马哥有必要进行一下记录这些窗口技术知识点。

具体分享技术点:

input中的NO_INPUT_CHANNEL剖析情况

NO_INPUT_CHANNEL剖析

首先看看它的注释:

frameworks/base/core/java/android/view/WindowManager.java

cpp 复制代码
   /**
         * Does not construct an input channel for this window.  The channel will therefore
         * be incapable of receiving input.
         *
         * @hide
         */
        public static final int INPUT_FEATURE_NO_INPUT_CHANNEL = 1 << 0;

明显注释可以看出,针对window不会构造对应的input channel,这样这个channel就不可能可以接受事件。

简单说就是一旦window有了这个INPUT_FEATURE_NO_INPUT_CHANNEL标识,那么就不会和正常window一样为它创建对应的inputchannel具体也可以看如下代码:

frameworks/base/core/java/android/view/ViewRootImpl.java

可以看到一旦设置了INPUT_FEATURE_NO_INPUT_CHANNEL就不会再创建对应的InputChannel。

那么有啥使用这个NO_INPUT_CHANNEL场景呢?

使用场景:

一些窗口完全不需要接收任何事件,就可以不需要有这个InputChannel,比如代码中比较常见的就是这个Snapshot窗口,这个主要是在app在后台后,从桌面重新回到前台就会有这样一个截图窗口显示,主要是为了点击后立即有显示效果的一种优化,和冷启动的Splash一样道理。

抓取对应winscope也可以看出:

Snapshot对应sf图层也显示InputChannel没有设置

通过dumpsys input看看还有有哪些是经典的NO_INPUT_CHANNEL情况
比如ActivityRecordInputSink这个图层也是不需要接受任何触摸事件来自己使用,只是作为一个遮盖而已。

总结:

NO_INPUT_CHANNEL主要给一些窗口完全不需要消费任何输入事件的情况,经典使用该flag窗口有SnapshotStatingWindow,ActivityRecordInputSink等。

更多framework详细代码和资料参考如下链接

投屏专题部分:

https://mp.weixin.qq.com/s/IGm6VHMiAOPejC_H3N_SNg

hal+perfetto+surfaceflinger

https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg

其他课程七件套专题:

点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

经常在学员的vip技术群里经常有很多学员会提问一些不太常见的窗口和input的相关的问题,虽然不太常见,但确实是工作中会遇到的一些问题,所以马哥有必要进行一下记录这些窗口技术知识点。

https://blog.csdn.net/zhimokf/article/details/137958615

更多framework假威风耗:androidframework007

相关推荐
一起搞IT吧5 分钟前
相机Camera日志实例分析之五:相机Camx【萌拍闪光灯后置拍照】单帧流程日志详解
android·图像处理·数码相机
浩浩乎@25 分钟前
【openGLES】安卓端EGL的使用
android
Kotlin上海用户组2 小时前
Koin vs. Hilt——最流行的 Android DI 框架全方位对比
android·架构·kotlin
zzq19962 小时前
Android framework 开发者模式下,如何修改动画过度模式
android
木叶丸2 小时前
Flutter 生命周期完全指南
android·flutter·ios
阿幸软件杂货间2 小时前
阿幸课堂随机点名
android·开发语言·javascript
没有了遇见3 小时前
Android 渐变色整理之功能实现<二>文字,背景,边框,进度条等
android
没有了遇见4 小时前
Android RecycleView 条目进入和滑出屏幕的渐变阴影效果
android
站在巨人肩膀上的码农4 小时前
去掉长按遥控器power键后提示关机、飞行模式的弹窗
android·安卓·rk·关机弹窗·power键·长按·飞行模式弹窗
呼啦啦--隔壁老王4 小时前
屏幕旋转流程
android