SystemUI之呈现流程

本文深入分析Android L中SystemUI的启动流程,从SystemUI的Application形式存在,开机自启动的原因,到SystemUIService如何启动一系列核心服务。接着探讨SystemUI的视图呈现过程,没有传统意义上的Activity,而是通过自定义Service和WindowManager将视图构建并添加到窗口,最终形成用户可见的状态栏和导航栏。
摘要由CSDN通过智能技术生成

SystemUI之功能介绍和UI布局实现 曾挖了一个坑,最近手头项目快结尾了,开始补坑。本篇基于AndroidL分析SystemUI的启动流程。

SystemUI主体框架启动流程

AndroidL上SystemUI是以Application的形式存在的,本质上来讲它和我们平时常见的App一样,只是它被放在了Frameworks包下,开机自启动,且能获取到的系统权限比普通应用要高。既然它也是一个App,那么分析之前不妨从AndroidManifest文件入手,SystemUI代码位于:
frameworks/base/packages/SystemUI
打开AndroidManifest文件,可以看到和一般应用一样注册了一堆activity/service/receiver组件,但没有provider组件。摘录主要的组件

<application
        android:name=".SystemUIApplication"
        android:persistent="true"
        android:allowClearUserData="false"
        android:allowBackup="false"
        android:process="com.android.systemui"
        android:supportsRtl="true"
        android:theme="@style/systemui_theme">
        ...
        <!-- Keep theme in sync with SystemUIApplication.onCreate().
             Setting the theme on the application does not affect views inflated by services.
             The application theme is set again from onCreate to take effect for those views. -->
    <service android:name="SystemUIService"
            android:exported="true"
            />

仔细浏览Manifest文件我们发现Activity组件里没有我们常见的
<category android:name="android.intent.category.LAUNCHER" />
这也是systemui没有出现在系统应用列表里的原因。那么看到这问题来了,一般的应用我们是通过点击桌面的应用图标来启动的,那么SystemUI在开机完成后就立马呈现出来了,是谁将它在什么时候启动的呢?
注意

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值