安卓系统软键盘初步分析

news2025/6/8 8:34:12

初步分析的相关日志

复现log:

11-05 14:01:24.768  7991  7991 V InputMethodManager: onViewClicked: true
11-05 14:01:24.768  7991  7991 D InputMethodManager: showSoftInput() view=androidx.appcompat.widget.AppCompatEditText{bd0acc9 VFED..CL. .F.P..ID 0,0-900,91 #7f0801e3 app:id/etd_placeholder_main aid=1073741824} flags=0 reason=SHOW_SOFT_INPUT
11-05 14:01:24.768  6964  6964 I GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3301
11-05 14:01:24.769  6964  6964 V InputMethodService: CALL: onStartInput
11-05 14:01:24.770  6964  6964 I GoogleInputMethodService: GoogleInputMethodService.onStartInput():1979
11-05 14:01:24.772  6964  6964 V InputMethod: showSoftInput()
11-05 14:01:24.772  6964  6964 V InputMethodService: Showing window: showInput=true mShowInputRequested=false mViewsCreated=true mDecorViewVisible=false mWindowVisible=false mInputStarted=true mShowInputFlags=1
11-05 14:01:24.772  6964  6964 V InputMethodService: showWindow: updating UI
11-05 14:01:24.773  6964  6964 W InputMethodService: Window size has been changed. This may cause jankiness of resizing window: -1 -> -2
11-05 14:01:24.774  6964  6964 V InputMethodService: CALL: onStartInputView
11-05 14:01:24.774  6964  6964 I GoogleInputMethodService: GoogleInputMethodService.onStartInputView():2091
11-05 14:01:24.792  6964  6964 V InputMethodService: showWindow: draw decorView!

不复现log:

11-05 13:58:46.715  7991  7991 V InputMethodManager: onViewClicked: true
11-05 13:58:46.716  7991  7991 D InputMethodManager: showSoftInput() view=androidx.appcompat.widget.AppCompatEditText{d7f5c50 VFED..CL. .F.P..ID 0,0-3000,91 #7f0800af app:id/edt aid=1073741824} flags=0 reason=SHOW_SOFT_INPUT
11-05 13:58:46.716  6964  6964 V InputMethodService: CALL: onStartInput
11-05 13:58:46.716  6964  6964 I GoogleInputMethodService: GoogleInputMethodService.onStartInput():1979
11-05 13:58:46.730  6964  6964 V InputMethod: showSoftInput()
11-05 13:58:46.730  6964  6964 V InputMethodService: Showing window: showInput=true mShowInputRequested=false mViewsCreated=false mDecorViewVisible=false mWindowVisible=false mInputStarted=true mShowInputFlags=1
11-05 13:58:46.731  6964  6964 V InputMethodService: showWindow: updating UI
11-05 13:58:46.739  6964  6964 V InputMethodService: CALL: onCreateCandidatesView
11-05 13:58:46.739  6964  6964 V InputMethodService: showWindow: candidates=null
11-05 13:58:46.739  6964  6964 V InputMethodService: CALL: onStartInputView
11-05 13:58:46.739  6964  6964 I GoogleInputMethodService: GoogleInputMethodService.onStartInputView():2091
11-05 13:58:46.750  7991  7991 V InputMethodManager: DISPATCH INPUT EVENT: com.android.internal.view.IInputMethodSession$Stub$Proxy@79c7c09
11-05 13:58:46.806  6964  6964 V InputMethodService: showWindow: draw decorView!

输入法的生命周期

 

 

从SurfaceFlinger的dump信息看InputMethod 这个window没有画出来。但是从window的dump信息看,InputMethod 这个window是有的:



  Window #12 Window{a13d60d u0 InputMethod}:
    mDisplayId=0 rootTaskId=10 mSession=Session{59ec9cd 4536:u0a10168} mClient=android.os.BinderProxy@12e08a4
    mOwnerUid=10168 showForAllUsers=false package=com.google.android.inputmethod.latin appop=NONE
    mAttrs={(0,0)(fillxfill) gr=BOTTOM CENTER_VERTICAL sim={adjust=pan} ty=INPUT_METHOD fmt=TRANSPARENT wanim=0x1030056 receive insets ignoring z-order
      fl=NOT_FOCUSABLE LAYOUT_IN_SCREEN SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS
      pfl=USE_BLAST FIT_INSETS_CONTROLLED
      vsysui=LIGHT_NAVIGATION_BAR
      apr=LIGHT_NAVIGATION_BARS
      bhv=DEFAULT
      fitTypes=STATUS_BARS NAVIGATION_BARS
      fitSides=LEFT TOP RIGHT}
    Requested w=3000 h=1828 mLayoutSeq=2144
    mIsImWindow=true mIsWallpaper=false mIsFloatingLayer=true
    mHasSurface=true isReadyForDisplay()=true mWindowRemovalAllowed=false
    ContainerAnimator:
      mLeash=Surface(name=Surface(name=a13d60d InputMethod)/@0x2fcb3d3 - animation-leash of insets_animation)/@0x321b72e mAnimationType=insets_animation
      Animation: com.android.server.wm.InsetsSourceProvider$ControlAdapter@6262ceb
        ControlAdapter mCapturedLeash=Surface(name=Surface(name=a13d60d InputMethod)/@0x2fcb3d3 - animation-leash of insets_animation)/@0x321b72e
    WindowStateAnimator{afb4e85 InputMethod}:
       mAnimationIsEntrance=true      Surface: shown=true layer=0 alpha=1.0 rect=(0.0,0.0)  transform=(1.0, 0.0, 0.0, 1.0)
    mForceSeamlesslyRotate=false seamlesslyRotate: pending=null    isOnScreen=true
    isVisible=true
    keepClearAreas: restricted=[], unrestricted=[]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 基础:创建、数据类型转换、基本运算符、

VS 快捷键 Ctri K D 代码整理 Ctri KM O 代码收缩 Ctri J 弹出提示 halcon 窗体应用 添加在线第三方库 右键项目名 --> 管理NuGet程序包 halcon 界面,创建选择 添加halcon离线动态链接库 右键引用 --> 添加引用 --> 选择动态链接库 .dll文件 导入…

22勤于思考:gRPC都有哪些优势和不足?

如果你能从专栏的开篇词开始读到这篇文章并且能够在过程中认真思考,那么我相信你目前已经能够对gRPC有了较为充分了解。在专栏的最后几节中,我们抽出一篇文章。来探讨一下gRPC有哪些优势和不足,因为只有这样我们才能取其精华,去其糟粕,学习gRPC框架设计的优点,还能反观出…

NLP领域顶级会议和期刊汇总(附CCF最新推荐目录)

研究NLP需要关注学术界or大厂AI Lab最新的科研动态,了解技术发展的趋势,写论文才能下笔如有神。找到了论文就能找到要复现的代码和要用到的数据集。 掌握科研动态也有助于提早做好产品规划以及技术预研。 对于NLPer而言,了解科研动态最好的方…

总结:网卡

一、背景 经常听到eth0,bond0这些概念,好奇他们的区别,于是有了此篇文章记录下。 二、介绍 网卡:即网络接口板,又称网络适配器或NIC (网络接口控制器),是一块被设计用来允许计算机在计算机网络上进行通讯…

一把LOL的时间我入门了Go语言

走进 Go 语言~ 前言: Go 语言是由 Google 公司推出的一款新的编程语言,作为谷歌的亲儿子,发展势头迅猛,各个大厂目前都在积极推进 Go 语言的使用。Go 是云计算、云原生、区块链等众多前沿领域的首推语言,目前流行的 …

RocketMQ-01

1. MQ介绍 1.1 为什么要用MQ 消息队列是一种“先进先出”的数据结构 其应用场景主要包含以下3个方面 应用解耦 系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任…

Python学习笔记--数据容器

(一) 数据容器入门 1. 数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素。每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 2.. 种类:list(列表…

MongoDB:常见的面试题和答案

1. 什么是MongoDB? MongoDB是一种非关系型数据库,被广泛用于大型数据存储和分布式系统的构建。MongoDB支持的数据模型比传统的关系型数据库更加灵活,支持动态查询和索引,也支持BSON格式的数据存储,这种格式可以支持读…

Go语言流处理,工厂模式,命令参数,序列化,单元测试

IO流 流就是数据在数据源和程序之间经历的路径。数据源可以是文件数据库或者键盘输入等,程序是运行在内存中的应用。 数据从数据源输入到程序的路径为输入流,从内存输出到数据源的路径为输出流。 流是以内存为核心,输入到内存就是输入流&am…

网络原理——IP地址与mac地址

目录 IP地址 IP地址 IP地址的组成 子网掩码 mac地址 冲突域与广播域 数据传输流程 IP地址 IP地址 互联网协议地址。每一个联网的主机都会分配一个IP地址。为32位二进制数,用4个.均分为四部分,在命令提示符中输入:ipconfig命令&#…

35岁的测试工程师被公司强行辞退,感叹道:我以前就该好好努力了

曾经的高薪软件测试工程师,今年35岁了,被公司劝退了,外卖跑到凌晨,很累,但还是有一种想诉说的冲动。哪怕让大家觉得已经说得太多了,烦了,都成祥林嫂了,但是,我是真的想说…

如何报名2023年CDGP数据治理专家认证?看这里

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

java中必会String的常用方法(IT枫斗者)

java中必会String的常用方法(IT枫斗者) 概述 在Java语言中,所有类似“ABC”的字面值,都是String类的实例;String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、截取、大小…

NumPy 初学者指南中文第三版:6~10

原文:NumPy: Beginner’s Guide - Third Edition 协议:CC BY-NC-SA 4.0 译者:飞龙 六、深入探索 NumPy 模块 NumPy 具有许多从其前身 Numeric 继承的模块。 其中一些包具有 SciPy 对应版本,可能具有更完整的功能。 我们将在下一章…

教你用Python和wxPython模块打造一个ChatGPT式打字效果程序

应用场景,可以使用类似ChatGPT回复的打字效果来增强用户体验或提高应用程序的可读性: 聊天机器人:当聊天机器人回复用户消息时,使用打字效果可以更好地模拟真实聊天体验,增强用户对聊天机器人的信任感。电子邮件客户端…

尚硅谷大数据技术Hadoop教程-笔记04【Hadoop-MapReduce】

视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】尚硅谷大数据技术Ha…

DPU02国产USB转UART控制芯片替代CP2102

目录DPU02简介DPU02芯片特性应用DPU02简介 DPU02是高度集成的USB转UART的桥接控制芯片,该芯片为RS-232设计更新为USB设计,并简化PCB组件空间提供了一个简单的解决方案。       DPU02包括了一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带…

HTML3.1表格

一、表格标签(行列的单元格方式整齐展示数据) 属性值&#xff1a; 标签名说明table 整体&#xff0c;包裹多个tr tr行&#xff0c;包裹tdtd单元格&#xff0c;包裹内容 注&#xff1a;标签嵌套关系&#xff1a;table>tr>td 代码&#xff1a; <!DOCTYPE html> &…

37岁测试工程师被裁,120天没找到工作,无奈...

从短期来看&#xff0c;程序员的确算是个不错的工作&#xff0c;薪水也比一般岗位高很多&#xff0c;但是从长远来看&#xff0c;程序员的中年危机会比其他岗位来的更早&#xff0c;很多程序员只有到了35岁左右&#xff0c;才能真正认清楚互联网行业&#xff0c;尤其是被裁之后…

日撸 Java 三百行day23-24

文章目录说明day23 使用具有通用性的队列1.复用技术2.包装类3.java内存分配4.代码day24 二叉树的建立1.思路2.代码说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff…