android源码分析之SystemUI分析(一)

SystemUI是指“系统UI”,SystemUI是以应用程序的形式提供系统UI界面的统一管理方案,它是一个标准的APK。

[TOC]
本文将比较全面的介绍SystemUI的组成,实现,布局以及客制化方案等等。本博文基于android8.0源码进行分析,由于android8.0相比以前的版本SystemUI部分改动是非常大的。

一、SystemUI组成

SystemUI包含的功能非常丰富,组成元素主要包含常见的System Bars,以及ScreenShot截屏、壁纸、最近运行的应用程序等。SystemUI也是各大安卓版本中变化比较大的一个部分。

  • Status Bar
  • Navigation Bar
  • Combined Bar (主要为Tablet设备使用)
  • Notifications
  • LockScreen
  • Recent (最近任务)
  • QuickSettings
  • 等等

二、SystemUI实现

了解了SystemUI后,本文先来大概讲解下StatusBar的实现流程。

1、相关代码

相关代码主要分为两个部分
1)、Service部分
代码路径:framework/base/services/java/com/android/server
2) 、应用部分
代码路径:framework/base/packages/SystemUI

SystemUI中SystemUIService是整个系统UI比较重要的载体,所以我们的分析将从SystemUIService开始,而SystemUIService是从SystemServer中启动的。关于这部分这里不做多的分析,详见SystemServer.java中的startSystemUi()方法。下面来看一下SystemUIServer中的onCreate()方法。

/*framework/base/packages/systemui/src/com/android/systemui/SystemUIService.java*/
    @Override
    public void onCreate() {
        super.onCreate();
        ((SystemUIApplication) getApplication()).startServicesIfNeeded();

        // For debugging RescueParty
        if (Build.IS_DEBUGGABLE && SystemProperties.getBoolean("debug.crash_sysui", false)) {
            throw new RuntimeException();
        }
    }

猜你喜欢

转载自blog.csdn.net/u014304560/article/details/80606786