引言

最近技术群里面的妹纸说:在华为手机上开发应用的时候,隐藏底部的虚拟按键Activity会被重启的问题,并且找不到问题所在,于是查查资料,发现问题解决起来蛮简单的。

问题描述

一开始觉得应该是代码问题,然后自己撸了一个工程,并在华为的测试机上测了一吧,发现在二级Activity隐藏掉虚拟按键盘的时候,然后按页面上的返回键,发现第一级的Activity的生命周期这样走了

startActivity(Intent)的声明周期
onCreate() ---> onStart()  --->onResume();
startActivityForResult(Intent,requestCode);的声明周期
onCreate() ---> onStart()  --->onResume() ---> onActivityResult(requestCode, resultCode, Intent);

这这,不符合预期的结果啊,Activity被重启了….这明显的影响性能啊,页面又重新绘制了一次。如果再有一点耗时操作,那么就被用户感知了,用户:浪费我时间和流量啊….

思路

仔细检查了代码,发现不是代码的问题,那么是什么问题了。我们想想,把虚拟按键隐藏后,最直观的东西:Activity的大小改变了吧??
为了确定这个猜测,我把Activity里面的onConfigurationChanged(Configuration newConfig) 重写了。然后Debug,接着复现一下,然后发现onConfigurationChanged确实被调用了…..
然后我们想想当横竖屏切换后,如果不在配置文件里面设置 android:configChanges=”” 值,是不是Activity也会重启啊。于是我们就查相关资料,我想configChanges里面应该也有个值是虚拟按键的。

解决方式

首先想到虚拟按键,在华为Android手机里面应该属于导航栏,那么应该是这样的

android:configChanges="navigation"

然后问题解决了。

拓展

英文说明 翻译
mcc The IMSI mobile country code (MCC) has changed — a SIM has been detected and updated the MCC. IMSI(国际移动用户识别码)发生改变,检测到SIM卡,或者更新MCC
mnc The IMSI mobile network code (MNC) has changed — a SIM has been detected and updated the MNC. IMSI网络发生改变,检测到SIM卡,或者更新MCC其中mcc和mnc理论上不可能发生变化
locale The locale has changed — the user has selected a new language that text should be displayed in. 语言发生改变,用户选择了一个新的语言,文字应该重新显示
touchscreen The touchscreen has changed. (This should never normally happen.) 触摸屏发生改变,这通常是不应该发生的
keyboard The keyboard type has changed — for example, the user has plugged in an external keyboard. 键盘类型发生改变,例如,用户使用了外部键盘
keyboardHidden The keyboard accessibility has changed — for example, the user has revealed the hardware keyboard 键盘发生改变,例如,用户使用了硬件键盘
navigation The navigation type (trackball/dpad) has changed. (This should never normally happen.) 导航发生改变,(这通常不应该发生) 举例:连接蓝牙键盘,连接后确实导致了navigation的类型发生变化。因为连接蓝牙键盘后,我可以使用方向键来navigate了
screenLayout The screen layout has changed — this might be caused by a different display being activated. 屏幕的布局发生改变,这可能导致激活不同的显示
fontScale The font scaling factor has changed — the user has selected a new global font size. 全局字体大小缩放发生改变
orientation The screen orientation has changed — that is, the user has rotated the device. 设备旋转,横向显示和竖向显示模式切换。
screenSize screenSize 屏幕大小改变了
smallestScreenSize smallestScreenSize 屏幕的物理大小改变了,如:连接到一个外部的屏幕上

解决华为手机隐藏虚拟按键Activity被重启的问题相关推荐

  1. Android:解决华为手机隐藏虚拟按键Activity被重新创建的问题

    解决华为手机隐藏虚拟按键Activity被重新创建的问题 问题描述 解决方法 分析 问题描述 在华为手机P9上 屏幕底部虚拟按键用户可以随时隐藏或显示,在改变后 返回上一页,会导致页面重新创建,页面操 ...

  2. 解决华为手机隐藏虚拟按键Activity被重新创建的问题

    把Activity的生命周期全部打印出来,确定隐藏或显示虚拟按键时,确实导致了Activity重建 然后在onCreate方法中 Configuration configuration = getRe ...

  3. 解决输入法遮挡布局和华为手机底部虚拟按键遮挡底部界面的方法

    先上最终的代码: public class AndroidWorkaround {public static void assistActivity(View content) {new Androi ...

  4. 界面适配华为手机的虚拟按键的解决方案

    一.概述 在项目中,测试发现在一些华为手机的屏幕适配上出现了问题,主要是因为华为Mate等一些系列的手机有一个虚拟按键的设计.当这些虚拟按键由用户手势滑出,或默认显示的话,就会遮挡我们本身的应用布局. ...

  5. android dialog隐藏虚拟按键,关于此框架在BottomSheetDialogFragment使用时,华为手机底部虚拟按键弹出与隐藏时输入框位置不贴键盘...

    我这边试过还是不行,而且我们ui是要dialog不全屏的,下面附上代码 public void onStart() { super.onStart(); Dialog dialog = getDial ...

  6. 隐藏与显示华为等有虚拟按键手机的虚拟按键

    关于手机虚拟按键的坑 首先吐槽一下虚拟按键,这个真的是没有卵用,个人觉得体验效果也差,不知道为什么华为会坚持使用.最近公司项目需用用到视频监控,在做视频播放全屏切换时,华为等有虚拟按键的手机,卡得我欲 ...

  7. android 华为底部虚拟键盘隐藏,Android隐藏手机底部虚拟按键的方法

    现在的Android手机有好多底部带虚拟按键,比如华为.nexus.魅族等等,一般情况下对APP没啥影响,但是有时候就必须要强制隐藏. 例如:游戏的时候,拍照的时候. 接下来加上几个方法就OK 了,代 ...

  8. 解决华为手机虚拟按键遮挡页面底部tab栏的问题

    谷歌原生,华为之类的虚拟按键遮挡页面底部RadioButton之类的问题. if (AndroidWorkaround.checkDeviceHasNavigationBar(this)) { //适 ...

  9. Android实现隐藏手机底部虚拟按键

    现在的手机比较流行底部带虚拟按键,比如华为.nexus,一般情况下对开发一个APP没啥影响,但是不一般情况下就会有影响的,比如全屏录像功能, 用简单的方法直接获取camera支持的手机屏幕分辨率然后用 ...

最新文章

  1. Java学习总结:16
  2. 数字集成电路的层次关系
  3. 【Linux 内核 内存管理】Linux 内核内存布局 ③ ( Linux 内核 动态分配内存 系统接口函数 | 统计输出 vmalloc 分配的内存 )
  4. [转]解决linux下sqldeveloper 中文环境显示乱码的问题
  5. matlab运行就是编译么,matlab编译运行c文件
  6. 【HNOI2019】白兔之舞【组合数学】【矩阵快速幂】【单位根反演】【Chirp Z-Transform】【原根】【MTT】
  7. java联接pg库_成为Java流大师–第5部分:将联接的数据库表转换为流
  8. Cinema 4D R25 for mac三维动画设计
  9. PHP数组常用方法(优化版)
  10. Python帮助文档的查看方式——Python初学者必看
  11. 网页设计(二)——HTML与BOX
  12. python获取中文字体点阵坐标_中文点阵字库的python自动生成程序
  13. 破解大众点评字体反爬
  14. 关于k700c,t628键值的问题!
  15. C# Graphics类详解
  16. 关于微擎人人商城互动直播通信服务安装和启动教程记录
  17. uni-app小程序,将base64图片保存到本地相册
  18. GAN_1——基础知识
  19. linux下载安装vlc指令,Ubuntu安装VLC播放器的步骤
  20. 剑指Offer LeetCode 面试题58 - II. 左旋转字符串

热门文章

  1. FileStream
  2. 士兵突击 精彩语录 (网上整理)
  3. 用计算机撩对象,2020适合撩对象的甜句子集锦
  4. SWUN 1165 - 司马称好
  5. 哪些原因可能会导致 HBase 的 RegionServer 宕机?
  6. Python入门之linux指令篇2
  7. Eclipse提交代码错误:rejected –non-fast-forward解决方法
  8. 未来计算机设想图片,未来的设想作文8篇
  9. ChatGPT有中文版吗?
  10. greasyfork脚本怎么取消_发现 GreasyFork 有广告之后试了试几个别的脚本站