android2.3 以后对StatusBar的处理从以前的framework抽出成了app,放在 framework/base/packages/SystemUI下
关系到的代码有,如下:
1,frameworks/base/services/java/com/android/server
2,frameworks/base/packages/SystemUI/
3.frameworks/base/core/java/android/app/StatusBarManager.java
调用过程如下:
1. 初始化过程
frameworks/base/services/java/com/android/server/SystemServer.java
-> ServerThread->run()->
statusBar = new StatusBarManagerService(context);
ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar); 初始化 StatusBarManagerService
->systemReady2() 启动 StatusBarService
2. 调用过程
1) APP层通过得到StatusBar的服务获取到StatusBarManager对象,然后通过Binder调用StatusBarManagerService
2) StatusBarManagerService 通过使用IStatusBar的aidl 调用 CommandQueue
在CommandQueue 中定义Callbacks
3) StatusBarService 实现了CommandQueue的回调
3. 总结
StatusBarManagerService 是StatusBar处理的核心,而具体做实际事情的是StatusBarService
本人只是看了整个流程,可能有missing的地方,请阅者给出意见
4. 流程图如下