[DESCRIPTION]
1.将锁屏设为“NONE”
2.进入任意一个app
3.按power锁屏,再解屏,再锁屏,再解屏
4.app画面无法点击,无法滑动,但是按 home 可回到 launcher
5.打开开发者选项中的屏幕触点和坐标滑动是正常的,但 app 不重新绘制了
[SOLUTION]
这个问题是因为连续锁屏,再解屏,ams 因为某个case无法重新绘制导致的,出现了假的卡顿现象
解决方法:将 wm.updateViewLayout() 更新方法移出 if 键盘模式特殊情况语句块中,正常情况也更新界面
frameworks\base\core\java\android\app\ActivityThread.java
//修改前 if ((l.softInputMode & WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) != forwardBit) { l.softInputMode = (l.softInputMode & (~WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION)) | forwardBit; if (r.activity.mVisibleFromClient) { ViewManager wm = a.getWindowManager(); View decor = r.window.getDecorView(); wm.updateViewLayout(decor, l); } } //修改后 if ((l.softInputMode & WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) != forwardBit) { l.softInputMode = (l.softInputMode & (~WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION)) | forwardBit; } if (r.activity.mVisibleFromClient) { ViewManager wm = a.getWindowManager(); View decor = r.window.getDecorView(); wm.updateViewLayout(decor, l); }
拓展阅读