前言
在调试imx6q_android6.0.1时,发现当画面显示90°时热插拔USB后导致画面出现自动旋转,大概两秒中后自动恢复。
一、修改内容
--- a/frameworks/base/services/core/java/com/android/server/am/ActivityStack.java
+++ b/frameworks/base/services/core/java/com/android/server/am/ActivityStack.java
@@ -3911,7 +3911,8 @@ final class ActivityStack {
if ((changes&(~r.info.getRealConfigChanged())) != 0 || r.forceNewConfig) {
// Aha, the activity isn't handling the change, so DIE DIE DIE.
r.configChangeFlags |= changes;
- r.startFreezingScreenLocked(r.app, globalChanges);
+ //change do not freeze screen to prevent screen rotate
+ //r.startFreezingScreenLocked(r.app, globalChanges);
r.forceNewConfig = false;
if (r.app == null || r.app.thread == null) {
if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
@@ -3932,8 +3933,10 @@ final class ActivityStack {
// "restart!".
if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
"Config is relaunching resumed " + r);
- relaunchActivityLocked(r, r.configChangeFlags, true);
+ //relaunchActivityLocked(r, r.configChangeFlags, true);
+ Slog.i(TAG,"don't relauch Activity when configuration changes");
r.configChangeFlags = 0;
+ return true;
} else {
if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION,
"Config is relaunching non-resumed " + r);
总结
触摸屏插拔等导致系统全局配置更新时,app会自动旋转问题规避,具体解决办法还是得从系统方向研究,因为是规避措施,所以存在正在前台运行的app无法同步更新系统配置到最新。