Android9.0 无锁屏下连续锁屏-解屏2次,画面点击无响应 bug 解决办法

[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);
       }

拓展阅读

用两张图告诉你,为什么你的App会卡顿?

发布了87 篇原创文章 · 获赞 157 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u012932409/article/details/103421192