Android Studio 3.1更新后,点击EditText打开键盘时App冻结卡顿求助
我之前也碰到过一模一样的情况!AS 3.1更新后带来的一些布局渲染和焦点处理的小变化,确实容易引发这类奇怪的卡顿问题。从你贴的login_activity.xml布局片段来看,根LinearLayout上设置的android:focusable="true"和android:focusableInTouchMode="true"大概率就是导致问题的核心原因。
问题原因分析
当你点击EditText时,系统会先处理根布局的焦点抢占逻辑——因为根布局被设置为可获取焦点,且触摸模式下也能优先获取焦点,这就和EditText自身的焦点请求产生了冲突。系统在协调这两个焦点请求时就会出现延迟,表现为光标闪烁几秒,最终导致App卡顿冻结。
可行的解决方案
优先尝试:移除根布局的焦点属性
直接删除根LinearLayout的android:focusable="true"和android:focusableInTouchMode="true"这两行代码。如果你的初衷是想通过点击空白处隐藏软键盘,完全可以通过给根布局添加触摸事件监听来实现,没必要靠抢占焦点的方式。我当时就是这么解决的,移除后卡顿立刻消失了。如果需要保留根布局焦点:明确EditText的焦点优先级
要是你确实需要根布局保持焦点能力,那就在对应的EditText组件上也明确设置android:focusable="true"、android:focusableInTouchMode="true",同时指定具体的android:inputType(比如android:inputType="text"),让系统优先响应EditText的焦点请求,避免冲突。清理AS缓存兜底
有时候项目缓存异常也会引发这类玄学问题,你可以试试点击Android Studio顶部菜单栏的File->Invalidate Caches / Restart,选择Invalidate and Restart,重启后再运行项目看看。
内容的提问来源于stack exchange,提问作者jake oliver

