SystemUI实现逻辑
SystemUI中的关键类
-
- BaseStatusBar.java
- 在android 8.0中该类被去除.5.1中是一个抽象类.
- 它的Start()方法继承自SystemUI,该方法实现状态栏启动的具体步骤.
- BaseStatusBar.java
-
- SystemUI.java(抽象类)
- SystemUi被SystemUIService调用,SystemUiService继承service.
- 所以StatusBar也是一个Service.
- android 8.0中 SystemUI implements SystemUiServiceProvider
- SystemUI.java(抽象类)
-
- CommandQueue.Callbacks
- BaseStatusBar实现CommanQueue.callbacks接口.
- CommandQueue继承IStatusBar.Stub远程接口.
- 内部接口 Callbacks (call back on the main thread)
- IStatusBar.Stub接口的方法通过CommandQueue的Callbacks接口实现.
- 所以BaseStatusBar又是IStatusBar.Stub远程的实现类.
- CommandQueue.Callbacks
-
- 实现抽象类BaseStatusBar.java的两个子类.
-
- PhoneStatusBar.java
- android 8.0中替换类是 StatusBar.java
-
- TableStatusBar.java(已去除)
-
- 实现抽象类BaseStatusBar.java的两个子类.
-
- 实现SystemUI的类
-
- KeyguardViewMediator.java
-
- RingtongPlayer.java
-
- VolumeUI.java
-
- SystemBars.java
-
- PowerUI.java
-
- StorageNotification.java
-
- 实现SystemUI的类
SystemUI启动
- SystemUIService是在SystemServer.java中被启动.
mActivityManagerService.systemReady(new Runnable() { ~}
startSystemUI(context); - SystemUIService的onCreate()调用SystemUIApplication的方法启动
SystemUI相关组件, startServicesIfNeeded() , 启动各种Service,
但是它们不是真正的Service, 是继承SystemUI.java这个抽象类, 复写
start()方法.
UI组件启动
通过Handler发 mHandler.sendEmptyMessage消息, 分别调用
了 StartService() 和 continueStartService()两个方法.
然后, 通过回调 – > SystemBars的对象中;
– > 调到PhoneStatusBar的start()方法. 同时PhoneStatusBar在
start()方法里面调用父类BaseStatusBar的start();
NavigationBar 和 QuickSettiingPanel初始化后, 添加到UI中;SystemBars中关键代码:
createStatusBarFromConfig() {
...
mStatusBar = (BaseStatusBar) cls newInstance();
...
mStatusBar.start();
}
NavigationBar导航栏
PhoneStatusBar类 start()方法里面调用 addNavigationBar();
– > prepareNavigationBarView(); 最后
– > WindowManager 调用 addView将 NavigationBarView添加到UI界面;- -> Back Home Recent.
PhoneStatusBar类中 prepareNavigationBarView()
Android 8.0SystemUI视觉变化(arm版)
-
- 通知栏消息长按可以自定义去设置.
-
- 通知消息可以分组管理.
-
- 通知栏的功能项减少: 移动数据 勿扰 转屏 省电 飞行
-
- 快速设置settings
Android8.0的逻辑变化
- 目前只是看到: PhoneStatusBar.java 和 BaseStatusBar.java去除.
- 增加StatusBar.java 和 CollapsedStatusBarFragment.java
… 待续