当前位置:   article > 正文

Android系统应用---SystemUI之一:SystemUI概述和创建启动流程分析_systemuiservice的创建过程

systemuiservice的创建过程

SystemUI概述

自android2.2开始,原本存在与framework-res.apk中的状态栏和下拉通知栏界面控制被分割出一个单独的apk文件,命名为SystemUI.apk,保存在System/priv-app/SystemUI/文件夹中。在SystemUI.apk中,存在着状态栏的图标,XML和控制文件等,这样的划分,使我们可以更方便地去修改UI的显示,也就说在目前的Android代码中,它与普通的应用程序并没有本质上的区别,都是通过四大组件来接受外界的请求并执行相关的操作,不过它所接受的请求主要来自各个系统服务,我们可以用分析标准应用程序的方法分析SystemUI,以AndroidManifest文件和layout布局文件入手进行深入分析。

SystemUI即系统的UI,是为用户提供系统级别的信息显示与交互的一套UI组件,所实现的功能包罗万象。屏幕顶端的状态栏、底部的导航栏、图片壁纸以及RecentPanel(最近使用的APP列表)都属于SystemUI的范围。SystemUI中还包含 TakeScreenshotService, PowerUI和 RingtonePlayer等服务,分别负责截屏,电池监控,铃声播放等功能。

我们从代码结构和AndroidManifest.xml文件开始分析来看,SystemUI涉及到的功能模块有:

●System bar(StatusBar && NavigationBar && CombinedBar)

●Notifications

●RecentPanal

●ScreenShot

●QuickSetting

●Power

●USB

●Volume

如下图:

 

 

SystemUI大部分功能之间相互独立,比如RecentPanel、TakeScreenshotService等均是按需启动,并在完成其既定任务后退出,这与普通的Activity以及Service没有区别。比较特殊的是状态栏、导航栏等组件的启动方式,它们运行于 SystemUIService。

SystemUI有如下特性,这样的特性也决定了它的实现方式

●有UI界面,在launcher之前启动,无法在manifest中没有注册从launcher启动,所以所有的程序启动都是外部启动的。

●常驻内存,随时可以做出响应

 

状态栏启动流程分析

以状态栏为例说明SystemUI的运行方式

相关代码分为两个部分:

Service部分: /frameworks/base/services/java/com/android/server/

应用部分:/frameworks/base/packages/SystemUI/

具体过程如下:

(1)状态栏需要显示UI,添加窗口到WindowManager,需要实时反馈系统状态,那么它就会长存系统中,通过service控制,状态栏就是一个长存系统进程空间运行的Service,它是一个系统服务。

(2)SystemServer中,当核心系统服务启动完成后会调用mActivityManagerService.systemReady()方法通知AMS系

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/127311
推荐阅读
相关标签
  

闽ICP备14008679号