Android填坑之旅(第十四篇)关于软键盘弹出未及时隐藏导致自定义View的onMeasure方法测量错误引发的血案

Posted 请叫我章鱼哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android填坑之旅(第十四篇)关于软键盘弹出未及时隐藏导致自定义View的onMeasure方法测量错误引发的血案相关的知识,希望对你有一定的参考价值。

大家好我是涛仔,我今天将项目中碰到九宫格解锁的Bug,及其发生的场景和解决方案给大家分享一下,其中受到@不知叫什么名字的细心帮助与指点在此尤为感谢!

1.Bug及发生场景
我做的这个项目在用户登录App之后,静置10分钟之后再次请求接口,后台就会报登录超时,就会回到九宫格界面重新登录,场景是这样的,用户在带有输入框的Activity中并且输入内容,此状态下软键盘是弹出的,把App应用按Home退到后台,我们通过DDMS中的stop按钮模拟进程杀死,在回到App应用,后台会返回登录超时,这时就回到九宫格界面,这时我们会发现九宫格界面会变得特别特别的小。
2.解决方案
相比读者也猜到问题所在了吧!出现此问题的原因是这样的,在旧Activity(B)中要回到新Activity(A)中在不做任何处理的情况下,旧Activity(B)的软键盘关闭不及时,导致回到Activity(A)中还会驻留Activity(B)的软键盘导致Activity(A)中九宫格绘制出现问题(出现问题的原因就是Activity(A)中自定义ViewGroup九宫格在测量的时候会去掉软键盘的高度,从而使得展示的九宫格界面特别小)

/**
@Override
    protected void onPause() 
        super.onPause();
        /**
         * create by wangtaotao
         * 此方法为了防止应用被回收之后或者登陆超时之后,导致九宫格解锁测量出现问题
         */
        KeyBoardUtils.hideInputForce(this);
    

我的解决方案就是以上代码块,只不过写在BaseActivity中。

关于软键盘的问题请参考以下博文,讲的非常细致,大家抽出其中的重点,就可以用到自己的项目中
CSDN传送门
其中抽取比较好的例子

以上是关于Android填坑之旅(第十四篇)关于软键盘弹出未及时隐藏导致自定义View的onMeasure方法测量错误引发的血案的主要内容,如果未能解决你的问题,请参考以下文章

Android探索之旅(第三十四篇)ADF WIFI 难用?不存在的

Android探索之旅(第三十四篇)ADF WIFI 难用?不存在的

Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

关于Android弹出软键盘“顶起”View的问题

H5页面关于android软键盘弹出顶起底部元素的解决方案

我的Android进阶之旅------>Android中android:windowSoftInputMode的使用方法