Android应用开发过程中遇到了拔插USB键盘导致应用重启问题,由于应用场景会出现频繁拔插USB键盘的场景,因此需要忽略该特性。
若只针对单个应用
AndroidManifest.xml中对activity进行以下定义
<activity
...
android:configChanges="keyboard|keyboardHidden|navigation">
若进行修改可修改以下方法
方法一
对比Configuration改变
frameworks/base/core/java/android/app/ResourcesManager.java#619
修改boolean isSameResourcesOverrideConfig(@Nullable IBinder activityToken,@Nullable Configuration overrideConfig)
方法即可
方法二
设置默认configChanges
frameworks/base/core/java/android/content/pm/parsing/component/ParsedActivityUtils.java#146
frameworks/base/core/java/android/content/pm/PackageParser.java#4367
找寻到AndroidManifestActivity_recreateOnConfigChanges
属性读取位置进行默认赋值
int mConfigChanges = ActivityInfo.CONFIG_NAVIGATION
| ActivityInfo.CONFIG_KEYBOARD
| ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
a.info.configChanges = getActivityConfigChanges(
sa.getInt(R.styleable.AndroidManifestActivity_configChanges, mConfigChanges),
sa.getInt(R.styleable.AndroidManifestActivity_recreateOnConfigChanges, 0));