高通android p无锁屏时休眠后马上亮屏,ui界面点击或滑动无响应

在高通android p的平台上,一个第三方的apk设置为默认的桌面后(或在开机向导界面),在无锁屏的情况下,休眠后马上按电源键唤醒,比较大的概率出现点击或滑动界面无反应,通过调试后发现ViewRootImpl.java中的draw()方法中返回后造成的

private boolean draw(boolean fullRedrawNeeded) {
        Surface surface = mSurface;
        if (!surface.isValid()) { //快速休眠唤醒后view调用到这里会直接返回
            return false;
        }
}

在网上查到说是google的一个path造成的。

解决这个问题可按如下修改

void setWindowStopped(boolean stopped) {
        if (mStopped != stopped) {
            mStopped = stopped;
            final ThreadedRenderer renderer = mAttachInfo.mThreadedRenderer;
            if (renderer != null) {
                if (DEBUG_DRAW) Log.d(mTag, "WindowStopped on " + getTitle() + " set to " + mStopped);
                renderer.setStopped(mStopped);
            }
            if (!mStopped) {
                scheduleTraversals();
            } else {
                if (renderer != null) {
                    renderer.destroyHardwareResources(mView);
                }
            }

            for (int i = 0; i < mWindowStoppedCallbacks.size(); i++) {
                mWindowStoppedCallbacks.get(i).windowStopped(stopped);
            }

            // 屏蔽以下的代码即可,如下所示
            /*if (mStopped) {
                mSurface.release();
            }*/
        }
    }

 

你可能感兴趣的:(android)