安卓,软键盘弹出来卡顿,找不到原因?

24次阅读
没有评论

博主在实际开发中,也会遇到一些诡异的现象,例如软键盘弹出卡顿,但是这种情况下,根本无法定位到卡顿原因。博主遇到这个问题时,怀疑了设置属性错误,怀疑了线程XX没关,怀疑了布局太过于复杂,总之该想的博主都想了,但是无论怎么试都是徒劳的。

因为博主犯了一个大错

在没找到原因之前,胡乱猜测,可能是这块?是不是那个的问题,而不确定问题的来源这个问题我感觉大家都会遇到,不从事情的本质上下手,这样会多花很多时间用在无用的地方,使自己的开发效率很低。

推荐一款检测卡顿的神器BlockCanary:https://github.com/markzhai/AndroidPerformanceMonitor

当时怀疑:

(1)什么动画没停,什么线程没关。

(2)软键盘 弹出的时候是不是加载的布局太多.

在长期的测试发现一个现象,就是在高端机型上这种状态不明显,而在底端机型问题比较严重,有时候弹出软键盘卡顿很长时间。

过了半个月博主思路换了,想想软键盘弹出卡顿,能不能从卡顿原因下手,来解决问题,后来找到了BlockCanary,接入使用后发现:

原因:竟然是 主页在软键盘每次弹出或者关闭的时候重新绘制.因为当时BlockCanary当时指向主页的RecyclerView重绘,我当时想是不可能的.

最后,博主凭直觉认为和主页SingleTask有关,因为没有确切的理由,这里只是提出自己的观点,而最后问题也解决了。

如果没有BlockCanary我永远发现不了,卡顿的原因是在看不见的主页。

后来我给主页设置成 android:windowSoftInputMode=”adjustNothing|stateAlwaysHidden”

至此,问题得以解决。

迷鹿, lostfawn
版权声明:本站原创文章,由迷鹿, lostfawn2021-10-13发表,共计708字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
载入中...
召唤伊斯特瓦尔