一.SystemUI的介绍
简介
SystemUI是Android操作系统的一个关键组件,主要负责管理和提供用户界面的核心元素,如状态栏、导航栏和锁屏界面等。从下面两点出发了解SystemUI的特性:
一下就是systemui的部分界面,还包括锁屏界面,画廊界面,还有音量条都属于systemui
1.SystemUI的定义和作用:
SystemUI是操作系统中的一个系统级应用程序,负责管理和呈现用户界面的重要元素。
它提供了与用户交互的界面元素,包括状态栏、导航栏、通知和快捷设置等。
SystemUI通过提供用户界面和交互方式,使用户能够轻松访问系统功能和通知。
SystemUI在Android系统中的位置和重要性:
SystemUI紧密集成在Android操作系统中,作为核心组件之一。
它位于操作系统的顶层,与其他关键组件(如Activity Manager和Window Manager)紧密协作。
SystemUI扮演着用户与操作系统之间的桥梁,为用户提供直观的界面和交互方式。
作为用户界面的核心部分,SystemUI的设计和功能直接影响着用户体验和系统的可用性。
2.SystemUI的架构
接下来介绍SystemUI的整体架构和组成部分,并详细解释各个组件的功能和相互关系:
Android SystemUI采用了MVC(Model-View-Controller)架构,以实现界面元素的管理和交互。
它由多个关键组件组成,包括状态栏、导航栏、通知管理器、快捷设置等。
组件的功能和相互关系:
状态栏(Status Bar):显示系统状态信息,如时间、电池电量、信号强度等,并提供快速访问通知和快捷设置的入口。
导航栏(Navigation Bar):提供设备导航和操作控制,包括返回、主页和最近任务等按钮。
通知管理器(Notification Manager):负责接收、管理和展示通知,包括应用推送的通知和系统事件的通知。
快捷设置(Quick Settings):提供快速访问常用系统设置的面板,如Wi-Fi、蓝牙、亮度等,以方便用户进行快速调整。
锁屏界面(Lock Screen):显示在设备锁定状态下的界面,提供时间、日期、通知预览和快速启动应用等功能。
系统UI控制器(System UI Controller):作为整个SystemUI的控制中心,负责协调各个组件之间的交互和管理。
其他辅助组件:还有一些辅助组件,如电源管理器、音量控制器等,用于管理设备的电源和音量控制。
这些组件相互配合,构成了SystemUI的整体架构。每个组件负责不同的功能和交互,并通过事件触发和消息传递等机制相互关联。理解SystemUI的架构和组件之间的相互关系,有助于我们深入了解系统界面的实现原理,并进行自定义和扩展。
二.systemui与普通应用对比
1.systemui的uid值为什么给普通应用的uid不一样
SystemUI应用是一个持久化进程,它为用户提供系统级别的信息显示与交互的一套UI组件,其 UID 是 SYSTEM_UID,值为1000,是系统核心应用,能够使用系统级权限,能够访问系统隐藏的API(@hide方法)和internal资源,在开机时由 SystemServer 启动 SystemUIService 实现应用启动。
2.下面看一下普通应用的uid是什么样
android中uid用于标识一个应用程序,uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变。 一个应用程序只能有一个uid,多个应用可以使用sharedUserId 方式共享同一个uid,前提是这些应用的签名要相同。 2.查看应用UID 的几种方式 方法1: ps 命令计算 这个 u0_a106 就表示该应用是 user 0(主用户)下面的应用,id是 106,普通应用程序的UID 都是从 10000开始的,所以 最终计算出的 UID 就是 10106。
三.systemui与普通apk的安装位置
1.以下是systemui的安装位置/system/priv-ap
/system/priv-app
中包括 Launcher,SystemUI,SettingsProvider 等,均是系统的核心应用,这些应用能使用系统级的权限,4.4 之前的所有 /system/app
下的软件都能使用系统级的权限,Google 这样做是把内置到系统的应用也做个级别的区别。
关于进程:
从应用的运行角度来说,/system/priv-app
中的 service 是不能被 kill 掉的,就算通过 adb kill
掉后系统也会重新拉起。例如:
Line 14879: 09-28 10:07:06.352 1624 2165 W ActivityManager: Scheduling restart of crashed service com.xxx.xxx/.xxx.xxxin 1000ms
Line 14907: 09-28 10:07:06.366 1624 2165 I ActivityManager: Start proc 5588:com.xxx.xxx/u0a96 for restart com.xxx.xxx
好处是进程可以保持始终运行,并且能拿到最多的权限;坏处是无法正常升级,因为一被 kill 马上又被拉起来,并且升级完成后,再起来的还是旧版本的 service。
2.以下是普通应用的安装位置/data/app/
安卓系统开机启动时,会启动一个超级管理服务SystemServer,这个SystemServer会启动所有的系统核心服务,其中就包括PackageManagerService,简称PMS,具体的apk安装过程,就是由这个PMS操作的。 PMS会监控/data/app/这个目录,在上一步中,系统安装程序向这个目录复制了一个apk,PMS自己就会定期扫描这个目录,找到后缀为apk的文件,如果这个apk没有被安装过,它就会自动开始安装。
安装在/data/app/文件夹下的权限没有全开,可以进行软件卸载,可以进行软件更新。