解决Android终端设备,外接键鼠屏幕闪烁问题

news/2024/10/22 13:52:50

问题

前端时间开发一款Android终端设备的Launcher,在遇到外接键鼠的时候会发现屏幕会闪一下,接入有线鼠标时屏幕不会闪烁,接入键鼠套装或有线键盘时屏幕就会闪烁一下,一开始我以为是键鼠套装中含有网卡模块,插入时会触发驱动,导致Android系统会加载一下,结果不是样的,一顿GPT也没有找到合适结果。

 

原因

系统检测到键盘类型发生了改变,会关闭当前Activity并重新执行onCreate启动Activity,导致屏幕会闪烁一下。

 

解决方法

在Manifest文件中activity标签里增加configChanges属性即可:

android:configChanges="keyboard|keyboardHidden"

属性值还可以增加以下内容:

  • fontScale: 字体大小改变。
  • keyboard: 输入设备类型的变化(例如,从没有键盘到有键盘)。
  • keyboardHidden: 输入设备可见性的变化(例如,键盘弹出或隐藏)。
  • locale: 区域设置的变化(例如,语言或地区设置更改)。
  • orientation: 屏幕方向的变化(从横屏到竖屏或反之)。
  • screenLayout: 屏幕布局大小和UI模式的组合变化。
  • uiMode: UI模式的变化(如汽车模式或桌面模式)。
  • screenSize: 屏幕尺寸的变化。
  • navigation: 导航设备的变化(如从无导航栏到有导航栏)。

 

总结

当配置发生变化时,如果你声明了 android:configChanges 属性并且正确地处理了这些变化,那么你的Activity将会收到 onConfigurationChanged() 方法的回调,而不是默认的生命周期方法(如 onPause(), onDestroy(), onCreate())。所以应该在这个方法里做适当的处理来适应新的配置。

使用 android:configChanges 需要谨慎。虽然它可以防止不必要的Activity重启,但如果处理不当,可能会导致内存泄漏或其他问题。因此,必要时得在 onConfigurationChanged() 中正确处理所有声明的配置变化。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

LaMI-DETR:基于GPT丰富优化的开放词汇目标检测 | ECCV24

现有的方法通过利用视觉-语言模型(VLMs)(如CLIP)强大的开放词汇识别能力来增强开放词汇目标检测,然而出现了两个主要挑战:(1)概念表示不足,CLIP文本空间中的类别名称缺乏文本和视觉知识。(2)对基础类别的过拟合倾向,在从VLMs到检测器的转移过程中,开放词汇知识偏向…

Python 量化demo

Python量化 量化交易: 通过程序选出合适的股票(或其他),在合适的时机,发起买入或卖出的交易,从中追求盈利。 量化指标 KDJ 指标 KDJ指标,也称为随机振荡器,是一种动量指标,用于衡量一定时间内股票收盘价与价格范围(最高价和最低价)的关系。 KDJ由三条线组成:快速线…

习题2.2

习题2.2代码 import numpy as np import pandas as pd import sympy as sp sp.init_printing(use_unicode=True) import matplotlib.pyplot as plt plt.rcParams[font.sans-serif]=[Times New Roman + SimSun + WFM Sans SC] plt.rcParams[mathtext.fontset]=cm Times New Roma…

习题2.1

习题2.1代码 import numpy as np import pandas as pd import sympy as sp sp.init_printing(use_unicode=True) import matplotlib.pyplot as plt plt.rcParams[font.sans-serif]=[Times New Roman + SimSun + WFM Sans SC] plt.rcParams[mathtext.fontset]=cm Times New Roma…

ArgoWorkflow教程(七)---高效的步骤间文件共享策略

之前我们分析了使用 artifact 实现步骤间文件共享,今天分享一下如何使用 PVC 实现高效的步骤间文件共享。1. 概述 之前在 artifact 篇我们演示了如何使用 artifact 实现步骤间文件传递,今天介绍一种更为简单的文件传递方式:PVC 共享。 artifact 毕竟是借助 S3 实现中转,效率…

Linux下安装Nginx,CentOS7安装Nginx

首先,需要安装一些编译 Nginx 所需的依赖包,使用以下命令: yum -y install gcc pcre - devel zlib - devel openssl - devel 下载 https://nginx.org/en/download.html上传到opt目录下 或者直接在linux系统里下载 wget http://nginx.org/download/nginx-1.26.2.tar.gz 如果c…

习题2.7

习题2.7代码 import numpy as np import pandas as pd import sympy as sp sp.init_printing(use_unicode=True) import matplotlib.pyplot as plt plt.rcParams[font.sans-serif]=[Times New Roman + SimSun + WFM Sans SC] plt.rcParams[mathtext.fontset]=cm Times New Roma…

玩转博客园

收集一些优化博客园的帖子博客园美化主题推荐之Bili https://www.cnblogs.com/AhuntSun-blog/p/12342443.html 博客园 复制他人的博客模板(皮肤) https://www.cnblogs.com/abadcat97/p/14146475.html