1. SystemUI与普通应用的区别

SystemUI

普通应用

UID

1000

应用安装时分配,>10000

编译方式

基于Android源码编译

基于Android SDK编译

安装方式

adb push SystemUI.apk /system/priv-app/SystemUI

adb install App.apk

安装位置

/system/priv-app/

/data/app/

数据位置

/data/user_de/

/data/data/

启动方式

系统启动

点击桌面应用图标

SystemUI 的 UID 是 SYSTEM_UID,值为1000,是系统核心应用,能够使用系统级权限,能够访问系统隐藏的API(@hide方法)和internal资源,在开机时由 SystemServer 启动 SystemUIService 实现应用启动。

2. 启动流程

SystemUIService 继承于 Service,由 SystemServer 中启动,方法调用顺序如下:

main()方法

public static void main(String[] args) {

new SystemServer().run();

}

run()方法

// Start services.

try {

t.traceBegin("StartServices");

startBootstrapServices(t);

startCoreServices(t);

startOtherServices(t);

} catch (Throwable ex) {

Slog.e("System", "******************************************");

Slog.e("System", "************ Failure starting system services", ex);

throw ex;

} finally {

t.traceEnd(); // StartServices

}

startOtherServices()方法

t.traceBegin("StartSystemUI");

try {

startSystemUi(context, windowManagerF);

} catch (Throwable e) {

reportWtf("starting System UI", e);

}

t.traceEnd();

startSystemUi()方法

private static void startSystemUi(Context context, WindowManagerService windowManager) {

PackageManagerInternal pm = LocalServices.getService(PackageManagerInternal.class);

Intent intent = new Intent();

intent.setComponent(pm.getSystemUiServiceComponent());

intent.addFlags(Intent.FLAG_DEBUG_TRIAGED_MISSING);

//Slog.d(TAG, "Starting service: " + intent);

context.startServiceAsUser(intent, UserHandle.SYSTEM);

windowManager.onSystemUiStarted();

}

在 SystemUIService 的 onCreate() 方法中会调用 SystemUIApplication 的 startServicesIfNeeded() 方法,完成对 SystemUI 各组件的初始化:

// Start all of SystemUI

((SystemUIApplication) getApplication()).startServicesIfNeeded();

startServicesIfNeeded()方法

public void startServicesIfNeeded() {

String[] names = SystemUIFactory.getInstance().getSystemUIServiceComponents(getResources());

startServicesIfNeeded(/* metricsPrefix= */ "StartServices", names);

}

getSystemUIServiceComponents()方法

/** Returns the list of system UI components that should be started. */

public String[] getSystemUIServiceComponents(Resources resources) {

return resources.getStringArray(R.array.config_systemUIServiceComponents);

}

3. 组件功能介绍

config_systemUIServiceComponents

组件

功能

NotificationChannels

创建SystemUI的通知Channel

KeyguardViewMediator

Recents

最近任务

VolumeUI

音量面板

Divider

分屏

StatusBar

顶部状态栏+快捷开关+通知面板+底部导航键

StorageNotification

存储设备相关通知

PowerUI

低电量提醒

RingtonePlayer

播放铃声(包括通知铃声)

KeyboardUI

键盘

PipUI

画中画

ShortcutKeyDispatcher

GarbageMonitor$Service

定期检查SystemUI堆内存并报告

LatencyTester

在DEBUGGABLE版本运行,用于测试系统中的延迟

GlobalActionsComponent

关机菜单

ScreenDecorations

手机屏幕屏切圆角,模拟刘海屏

AuthController

显示生物识别UI(指纹认证,人脸认证)

SliceBroadcastRelayHandler

SizeCompatModeActivityController

InstantAppNotifier

显示Instant Apps(用户设备不需要安装的应用)的通知

ThemeOverlayController

WindowMagnification

管理窗口放大镜

SystemActions

ToastUI

在SystemUI进程显示其他应用的Toast

android uid systemui,SystemUI-功能介绍相关推荐

  1. Android 系统(58)---Android 系统 UI - SystemUI之功能介绍和UI布局实现

    Android 系统 UI - SystemUI之功能介绍和UI布局实现 前言 Android ROM开发过程中,难免会涉及到对SystemUI的修改,之前做过一些这方面的工作,现在整理下,准备按照如 ...

  2. Android 系统 UI - SystemUI之功能介绍和UI布局实现

    前言 Android ROM开发过程中,难免会涉及到对SystemUI的修改,之前做过一些这方面的工作,现在整理下,准备按照如下章节介绍SystemUI.借此对SystemUI做下整体性回顾.  -S ...

  3. android 7.0 新功能介绍(Nougat)

    多窗口支持 在 Android 7.0 中,我们为该平台引入了一个新的而且非常需要的多任务处理功能 - 多窗口支持. 现在,用户可以一次在屏幕上打开两个应用. 在运行 Android 7.0 的手机和 ...

  4. android小米手机拍照功能介绍,小米手机使用手册

    小米手机使用手册 1. 设置默认输入法 默认的输入法是英语的.也就是只能输入英文字母.但是往往我们用到汉字的比较多.所以,这里就教大家怎么设置默认输入法. 屏幕主页-设置-全部设置-系统-语言和输入法 ...

  5. Android音乐播放器-- 功能介绍

    目前,市面上的播放器功能越来越强大,相对的,操作也越来越复杂,所以就萌发了做一个操作简单的音乐播放器的想法,目前实现的功能包括如下几点 : 1.  音乐列表 2.  专辑分类列表 3.  歌手分类列表 ...

  6. 三星android功能怎么用,三星GALAXY S II升级Android 4.0新功能介绍及使用技巧

    本文导航第1页:(一) 第3页:(三) 第2页:(二) 大家的三星GALAXY SII 升级Android 4.0了吗?在升级ICS (Ice Cream Sandwich) 冰淇淋三明治系统之后,有 ...

  7. android小米手机拍照功能介绍,小米9相机使用技巧

    小米9作为小米首款后置三摄的手机,搭载4800万超广角AI三摄,采用索尼IMX586 4800万传感器,硬件规格十分强悍.这么好的硬件配置,要是不掌握一些拍摄技巧就浪费了,下面给大家介绍小米9相机使用 ...

  8. android各个版本及功能介绍,Android各个版本的介绍

    前言:笔者在面试的过程中,已经被问过不下三次,因此在这里分析一下.可能不够详细,请各位大佬多多包涵. 一.版本对应的API 级别 API 级别:是对 Android 平台版本提供的框架 API 修订版 ...

  9. android 7相机拍照功能介绍,镜头配备及拍照功能介绍_华为 Mate 7_手机Android频道-中关村在线...

    接下来是拍照方面,我们首先来看看两款产品在摄像头上的硬件配备情况.华为Ascend Mate7后置一颗1300万像素的Sony第四代BSI堆栈式摄像头(IMX214.F2.0超大光圈.28mm超大广角 ...

  10. android 华为手机拍照功能介绍,一款可以让普通人拍出摄影效果的手机 华为 P30 拍照专项评测...

    一年过去了,无论是去年的华为 P20还是今年的华为 P30,网友当年调侃说的"在拍照方面能打败华为的恐怕只有华为了"这句话,似乎也随着华为 P30的发布而成真了. 华为 P30系列 ...

最新文章

  1. windows10下,from skimage import morphology 报错的解决办法
  2. 如何获取字符串的最后一个字符?
  3. [读书笔记]C#学习笔记三: C#类型详解..
  4. CVPR 2020 | 反传统的无监督人脸旋转方案:旋转-渲染
  5. DeepMedic —— 一种经典的医学图像分割的3D CNN框架
  6. dell笔记本指示灯闪烁_带你认识电脑电源状态指示灯不同亮度不同含义
  7. s3c44b0x开发板之BOOT ROM配置
  8. [摘自MSDN] ASP.Net2.0学习 [1] 母版页 2 : 创建和使用 ASP.NET 母版页
  9. 联通研究院处长王志军:Hadoop在电信业大数据的应用
  10. 加拿大计算机语言学,加拿大语言学专业排名
  11. php扩展包安装了为啥没加载,已安装PHP扩展但未加载
  12. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下跌0.25%
  13. Xilinx产品与及开发工具2017
  14. 网页版 Nginx 配置文件生成器发布,在线一健生成神器!不用愁了!
  15. Python常见面试题总结
  16. sqlserver 自定义日期函数(MMdd)
  17. UCT树用于四子棋对抗实验
  18. 【论文阅读】A Survey of Incentive Mechanism Design for Federated Learning 联邦学习激励机制设计综述
  19. 语法分析程序--编译原理
  20. springSecurity 登陆失败前台显示账号密码登录错误

热门文章

  1. 杜比dss200服务器重装,杜比dss200服务器恢复系统操作
  2. 未明学院:量化训练营,帮我拿下新加坡国立大学定量金融offer!
  3. eDisMax查询解析器
  4. CentOS 搭建 Leanote 云笔记
  5. 【WIN 03】下载安装Cherrytree
  6. 计量经济学五个基本假定
  7. 双极化天线及其下倾技术(转)
  8. 国外破解组织宣布《星际2》破解失败
  9. 报错:Could not connect to any X display
  10. bzoj 3234: [Ahoi2013]立方体