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

来源:互联网 发布:淘宝企业店铺公司更改 编辑:程序博客网 时间:2024/05/18 03:18

大家好我是涛仔,我今天将项目中碰到九宫格解锁的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传送门
其中抽取比较好的例子

阅读全文
1 0
原创粉丝点击