systemui 分析

SystemUI是Android系统中的一部分,包含截屏、壁纸、低电量警告等功能。SystemUI以Service形式运行在SystemUIService进程中,其中状态栏是一个长驻Service。SystemUI结构包括SystemUIService、StatusBarManagerService、BaseStatusBar等。启动流程在系统启动过程中完成,主要涉及PhoneStatusBar、CommandQueue和StatusBarManagerService。状态栏图标加载由PhoneStatusBarPolicy监听系统状态并更新,通过StatusBarManagerService和CommandQueue交互,定义在config_statusBarIcons中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机SystemUI

在源码中的位置/frameworks/base/package/SystemUI

SystemUI是什么?

systemui : 截屏操作TakeScreenshotService、图片壁纸ImageWallpaper、低电警告powerui、播放铃声ringtoneplayer、usb、volumeui、状态栏statusbar、导航栏navigationbar、最近使用列表recents、锁屏keyguardviewmediator

 

状态栏需要实时反馈系统状态,那么它就会长存系统中(AndroidManifest.xml中的android:persistent="true"),而在Android中长存系统运行的组件只有Service,那么,状态栏就是一个长存系统进程空间运行的Service,它是一个系统服务。

运行于一个名为SystemUIService的system_server进程通过Context.startService()方式启动的常规Android服务中,并且通过WindowManager.addView()创建他们的窗口。

 

 

 

1.    SystemUI结构

 

SystemUIService:一个普通的Android服务,它以一个容器的角色运行于SystemUI进程中。在它内部运行着多个子服务,其中之一便是状态栏与导航栏的实现者——BaseStatusBar的子类之一。

IstatusBarService:即系统服务StatusBarManagerService,状态导航栏向外界提供服务的前端端口,运行于system_server进程中。

BaseStatusBar及其子类:状态栏与导航栏的实际实现者,运行于SystemUIService中。

IstatusBar,即SystemUI中的CommandQueue,联系StatusBarManagerService与BaseStatusBar的桥梁。

ImageWallpaper、RecentActivity、TaskScreenshotService等都是标准的Android应用程序组件,且相互独立。

1.    SystemUI启动流程

状态栏和导航栏运行于一个名称为SystemUIService的Service中,因此其启动过程就是SystemUIService的启动过程。

SystemUIService何时由谁启动?作为一个系统级别的UI组件,应是在系统启动过程中完成。在负责启动各种系统服务的ServerThread中,当核心系统服务启动完成后,ServerThread会通过调用ActivityManagerService.systemReady()方法通知AMS系统已经就绪。这个systemReady拥有一个名为goingCallback的Runnable实例作为参数。顾名思义,当AMS完成对systemReady()的处理后将会回调这一Runnable的run()方法。在这一run()方法中可以找到Sy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值