安卓7.0关机流程(显示)

来源:互联网 发布:云计算标准和应用大会 编辑:程序博客网 时间:2024/06/06 01:59

首先是到PhoneWindowManager下找到关机会触发的那个函数

powerShortPressShutDown


这个函数里会调用

sendCloseSystemWindows


然后在ActivityManagerService中

closeSystemDialogs(


然后有mWindowManager.closeSystemDialogs


这里是binder通信调用WindowManager的实现

public void closeSystemDialogs(String reason) {
        synchronized(mWindowMap) {
            final int numDisplays = mDisplayContents.size();
            for (int displayNdx = 0; displayNdx < numDisplays; ++displayNdx) {
                final WindowList windows = mDisplayContents.valueAt(displayNdx).getWindowList();
                final int numWindows = windows.size();
                for (int winNdx = 0; winNdx < numWindows; ++winNdx) {
                    final WindowState w = windows.get(winNdx);
                    if (w.mHasSurface) {
                        try {
                            w.mClient.closeSystemDialogs(reason);
                        } catch (RemoteException e) {
                        }
                    }
                }
            }
        }
    }


这里就是屏幕的黑屏了,但是各种服务的关闭是在黑屏后的,由于我做的就是显示相关暂时分析到这里。


我会在WM这里通过binder控制Surfaceflinger达到我的显示效果。


wm这里不仅关机会调用  还有别的流程在调用,所以直接在power哪里控制。1

原创粉丝点击