您的位置:首页 > 移动开发 > Android开发

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

2017-08-29 18:43 246 查看

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

其中抽取比较好的例子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息