SystemUI 7.0学习笔记二-状态栏和导航栏

本文详细探讨了SystemUI 7.0中状态栏和导航栏的启动过程,从SystemBars开始,通过ServiceMonitor、StatusBarManagerService到PhoneStatusBar的启动,解释了如何创建和添加窗口,以及与StatusBarManagerService之间的交互。同时介绍了PhoneStatusBar如何初始化导航栏并添加事件监听。最后提到了相关参考文章。
摘要由CSDN通过智能技术生成

状态栏和导航栏的启动

SystemUI 7.0学习笔记一中SERVICES中类的名字就可以大致猜出来它们的功能,对!本节的主角就是com.android.systemui.statusbar.SystemBars.class。

首先看一张图来个全面的把握,
图二

SystemBars的start()会new一个ServiceMonitor对象,接着会调用其start()。

public class SystemBars extends SystemUI implements ServiceMonitor.Callbacks {
   
    ......
    @Override
    public void start() {
        if (DEBUG) Log.d(TAG, "start");
        mServiceMonitor = new ServiceMonitor(TAG, DEBUG,
                mContext, Settings.Secure.BAR_SERVICE_COMPONENT, this);
        mServiceMonitor.start();  // will call onNoService if no remote service is found
    }
    ......
}

ServiceMonitor的start()发消息给Handler处理,

public void start() {
        ......
        mHandler.sendEmptyMessage(MSG_START_SERVICE);
    }
private final Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            switch(msg.what) {
                case MSG_START_SERVICE:
                    startService();
                    break;
                ......
            }
        }
    };

startService()中mCallbacks.onNoService();的mCallbacks就是创建ServiceMonitor时传入的this(SystemBars)。

private void startService() {
        mServiceName = getComponentNameFromSetting();
        if (mDebug) Log.d(mTag, "startService mServiceName=" + mServiceName);
        if (mServiceName == null) {
            mBound = false;
            mCallbacks.onNoService();
        } else {
            long delay = mCallbacks.onServiceStartAttempt();
            mHandler.sendEmptyMessageDelayed(MSG_CONTINUE_START_SERVICE, delay);
        }
    }

回调SystemBars的onNoService()里创建StatusBar,

public class SystemBars extends SystemUI implements ServiceMonitor.Callbacks {
   
    ......
    @Override
    public void
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值