android system UI 基础的基础
Android 系统中的 SystemUI
是一种特殊的应用程序,它负责管理和显示设备的用户界面组件,例如状态栏、导航栏和最近任务列表等。SystemUI
是在 Android 启动过程中由 Zygote
进程启动的。以下是 SystemUI
启动过程的详细步骤:
SystemUI
启动过程
-
1.启动
init
进程:- Android 启动时,
init
进程是第一个运行的用户空间进程。它会读取初始化脚本(通常是/init.rc
)来启动其他系统服务。
- Android 启动时,
-
2.启动
Zygote
进程:init
进程会启动Zygote
进程。Zygote
是 Android 的应用程序进程启动器,所有的应用程序进程都是由Zygote
派生出来的。- 在启动过程中,
Zygote
会预加载一些核心类和资源,以加快应用程序的启动速度。
-
3.启动
SystemServer
进程:Zygote
进程会启动SystemServer
进程。SystemServer
是一个关键的系统进程,负责启动各种系统服务,包括 Activity Manager、Package Manager、Window Manager 等。
-
4.启动
SystemUI
服务:SystemServer
进程会启动SystemUI
应用程序。具体地,SystemUI
的启动是由SystemServer
中的SystemUIService
类来处理的。SystemUI
的启动代码位于com.android.systemui.SystemUIApplication
类中,该类会初始化各种系统 UI 组件。
具体启动代码示例
以下是一些关键代码段,展示了 SystemUI
是如何启动的:
SystemServer.java
中启动 SystemUI
的代码
private void startOtherServices() {// ... other service starts ...// Start SystemUItraceBeginAndSlog("StartSystemUI");try {startSystemUi(context);} catch (Throwable e) {reportWtf("starting System UI", e);}traceEnd();// ... other service starts ...
}
startSystemUi
方法
private void startSystemUi(Context context) {Intent intent = new Intent();intent.setComponent(new ComponentName("com.android.systemui","com.android.systemui.SystemUIService"));context.startServiceAsUser(intent, UserHandle.SYSTEM);
}
SystemUIApplication.java
初始化
public class SystemUIApplication extends Application {private List<SystemUI> mServices;@Overridepublic void onCreate() {super.onCreate();mServices = new ArrayList<>();// Add different SystemUI components here, such as StatusBar, NavigationBar, etc.mServices.add(new StatusBar(this));mServices.add(new NavigationBar(this));// Initialize all servicesfor (SystemUI service : mServices) {service.start();}}
}
总结
SystemUI
是在 Android 启动过程中由 SystemServer
进程通过 Zygote
进程启动的。SystemServer
通过调用 startSystemUi
方法来启动 SystemUI
应用程序,该应用程序的入口是 SystemUIApplication
类,它会初始化和启动各种系统 UI 组件。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
android system UI 基础的基础
Android 系统中的 SystemUI 是一种特殊的应用程序,它负责管理和显示设备的用户界面组件,例如状态栏、导航栏和最近任务列表等。SystemUI 是在 Android 启动过程中由 Zygote 进程启动的。以下是 SystemUI 启动过程的详细步骤: SystemUI 启动过…...
![](https://img-blog.csdnimg.cn/direct/65f3066dbf6a416882b1722c350e77ca.png)
ARM32开发——GD32F4定时器查询
🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录...
![](https://img-blog.csdnimg.cn/direct/413e8c411c0e42698a59b76f67129f42.png)
【机器学习】第7章 集成学习(小重点,混之前章节出题但小题)
一、概念 1.集成学习,顾名思义,不是一个玩意,而是一堆玩意混合到一块。 (1)基本思想是先 生成一定数量基学习器,再采用集成策略 将这堆基学习器的预测结果组合起来,从而形成最终结论。 &#x…...
![](https://img-blog.csdnimg.cn/direct/68a83117427249cea62b344b10e39b4e.png)
代码随想录——子集Ⅱ(Leecode 90)
题目链接 回溯 class Solution {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> list new ArrayList<Integer>();boolean[] used; public List<List<Integer>> subsetsWithDup(int[] nums) {use…...
![](https://www.ngui.cc/images/no-images.jpg)
vue关闭页面时触发的函数(ai生成)
在Vue中,可以通过监听浏览器的beforeunload事件来在关闭页面前触发函数。这里是一个简单的示例: new Vue({el: #app,methods: {handleBeforeUnload(event) {// 设置returnValue属性以显示确认对话框event.returnValue 你确定要离开吗?;// 在…...
![](https://www.ngui.cc/images/no-images.jpg)
马尔可夫性质与Q学习在强化学习中的结合
马尔可夫性质是强化学习(RL)算法的基础,特别是在Q学习中。马尔可夫性质指出,系统的未来状态只依赖于当前状态,而与之前的状态序列无关。这一性质简化了学习最优策略的问题,因为它减少了状态转移的复杂性。 …...
![](https://www.ngui.cc/images/no-images.jpg)
【LeetCode 5.】 最长回文子串
一道题能否使用动态规划就在于判断最优结构是否是通过最优子结构推导得到?如果显然具备这个特性,那么就应该朝动态规划思考。如果令dp[i][j]表示串s[i:j1]是否是回文子串,那么判断dp[i][j] 是否是回文子串,相当于判断s[i] 与 s[j]…...
![](https://img-blog.csdnimg.cn/direct/aae218f952a34917a19d13367626321c.png)
联邦学习周记|第四周
论文:Active Federated Learning 链接 将主动学习引入FL,每次随机抽几个Client拿来train,把置信值低的Client概率调大,就能少跑几次。 论文:Active learning based federated learning for waste and natural disast…...
![](https://img-blog.csdnimg.cn/direct/7045c6b466744cc480028c14650fb73f.png)
机器学习课程复习——逻辑回归
1. 激活函数 Q:激活函数有哪些? SigmoidS型函数Tanh 双曲正切函数...
![](https://img-blog.csdnimg.cn/direct/e6ac4d5def0148e0ac7d313102e96cd9.png)
Rocky Linux 更换CN镜像地址
官方镜像列表,下拉查找 官方镜像列表:https://mirrors.rockylinux.org/mirrormanager/mirrorsCN 开头的站点。 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/RackyLinux_Update_repo.sh #!/bin/bash # -*- codin…...
![](https://img-blog.csdnimg.cn/direct/4e7f974a4ec44da9939433dbd2d421d2.png)
Linux rm命令由于要删的文件太多报-bash: /usr/bin/rm:参数列表过长,无法删除的解决办法
银河麒麟系统,在使用rm命令删除文件时报了如下错误,删不掉: 查了一下,原因就是要删除的文件太多了,例如我当前要删的文件共有这么多: 查到了解决办法,记录在此。需要使用xargs命令来解决参数列表…...
![](https://img-blog.csdnimg.cn/direct/822cac95b99a4380a2d7d855b46c7206.png)
【包管理】Node.JS与Ptyhon安装
文章目录 Node.JSPtyhon Node.JS Node.js的安装通常包括以下几个步骤: 访问Node.js官网: 打开Node.js的官方网站(如:https://nodejs.org/zh-cn/download/)。 下载安装包: 根据你的操作系统选择对应的Node…...
![](https://img-blog.csdnimg.cn/direct/42a59a22362b4abab28dd106610d56cc.gif#pic_center)
SpringMVC系列四: Rest-优雅的url请求风格
Rest请求 💞Rest基本介绍💞Rest风格的url-完成增删改查需求说明代码实现HiddenHttpMethodFilter机制注意事项和细节 💞课后作业 上一讲, 我们学习的是SpringMVC系列三: Postman(接口测试工具) 现在打开springmvc项目 💞Rest基本介…...
![](https://img-blog.csdnimg.cn/direct/e69a2de99aeb4ba6826f40b879bac3b2.png)
Hexo 搭建个人博客(ubuntu20.04)
1 安装 Nodejs 和 npm 首先登录NodeSource官网: Nodesource Node.js DEB 按照提示安装最新的 Node.js 及其配套版本的 npm。 (1)以 sudo 用户身份运行下面的命令,下载并执行 NodeSource 安装脚本: sudo curl -fsSL…...
![](https://img-blog.csdnimg.cn/direct/7664e76429e54f989e71750db214ea37.png)
【论文阅读】-- Attribute-Aware RBFs:使用 RT Core 范围查询交互式可视化时间序列颗粒体积
Attribute-Aware RBFs: Interactive Visualization of Time Series Particle Volumes Using RT Core Range Queries 摘要1 引言2 相关工作2.1 粒子体渲染2.2 RT核心方法 3 渲染彩色时间序列粒子体积3.1 场重构3.1.1 密度场 Φ3.1.2 属性字段 θ3.1.3 优化场重建 3.2 树结构构建…...
![](https://www.ngui.cc/images/no-images.jpg)
A类IP介绍
1)A类ip给谁用: 给广域网用,公网ip使用A类地址,作为公网ip时,Ip地址是全球唯一的。 2)基本介绍 ip地址范围 - 理论范围 0.0.0.0 ~127.255.255.255:00000000 00000000 00000000 00000000 ~ 0111…...
![](https://img-blog.csdnimg.cn/direct/8df4822065de406992fce1198d9c07d0.png)
HTML5基本语法
文章目录 HTML5基本语法一、基础标签1、分级标题2、段标签3、换行及水平线标签4、文本格式标签 二、图片标签1、格式2、属性介绍 三、音频标签1、格式2、属性介绍 四、视频标签1、格式2、属性介绍 五、链接标签1、格式2、显示特点3、属性介绍4、补充(空链接…...
![](https://img-blog.csdnimg.cn/direct/988eab20cf044e73a5f656c43c8a56ed.png#pic_center)
正则表达式常用表示
视频教程:10分钟快速掌握正则表达式 正则表达式在线测试工具(亲测好用):测试工具 正则表达式常用表示 限定符 a*:a出现0次或多次a:a出现1次或多次a?:a出现0次或1次a{6}:a出现6次a…...
![](https://www.ngui.cc/images/no-images.jpg)
【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】007 - evb-rk3568_defconfig 配置编译全过程
【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】007 - evb-rk3568_defconfig 配置编译全过程 一、编译后目录列表二、make distclean三、生成.config文件:make V=1 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- evb-rk3568_defconfig四、开始编译:CROSS_COMPILE=aarch64-…...
![](https://img-blog.csdnimg.cn/direct/603b3459b0d549eca40c0fbc82d4e45a.png)
11.1 Go 标准库的组成
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...
![](https://img-blog.csdnimg.cn/direct/c57271387c67413f80c14d46e529834c.png)
【UG\NX二次开发】UF 调用Grip例子(实现Grip调用目标dll)(UF_call_grip)
此例子是对:【UG\NX二次开发】UF 加载调用与卸载目标dll(UF_load_library、UF_unload_library)_ug二次开发dll自动加载-CSDN博客的补充。 ①创建txt文本,编写以下内容(功能:接收路径,调用该路径的dll)。改后缀为Grip文件(.grs)。…...
![](https://img-blog.csdnimg.cn/direct/f1f5d46142224eaf8e55d574f365b472.png)
[算法刷题积累] 两数之和以及进阶引用
两数之和很经典,通常对于首先想到的就是暴力的求解,当然这没有问题,但是我们如果想要追求更优秀算法,就需要去实现更加简便的复杂度。 这里就要提到我们的哈希表法: 我们可以使用unordered_map去实现,也可以根据题目&a…...
![](https://www.ngui.cc/images/no-images.jpg)
pytest+parametrize+yaml实例
# 一、yaml格式 # # yaml是一种数据类型,可以和json之间灵活的切换,支持注释、换行、字符串等。可以用于配置文件或编写测试用例。 # # 数据结构:一般是键值对的方式出现。注意编写时值前面必须有空格,键:(…...
![](https://img-blog.csdnimg.cn/direct/daa8e360c0104cfb86676dee3adfe541.png)
【HarmonyOS】鸿蒙应用模块化实现
【HarmonyOS】鸿蒙应用模块化实现 一、Module的概念 Module是HarmonyOS应用的基本功能单元,包含了源代码、资源文件、第三方库及应用清单文件,每一个Module都可以独立进行编译和运行。一个HarmonyOS应用通常会包含一个或多个Module,因此&am…...
![](https://img-blog.csdnimg.cn/img_convert/fa9805bd40283e647476fbeaee8f4eed.png)
深入Node.js:实现网易云音乐数据自动化抓取
随着互联网技术的飞速发展,数据已成为企业和个人获取信息、洞察市场趋势的重要资源。音频数据,尤其是来自流行音乐平台如网易云音乐的数据,因其丰富的用户交互和内容多样性,成为研究用户行为和市场动态的宝贵资料。本文将深入探讨…...
![](https://img-blog.csdnimg.cn/img_convert/c0ae811469a3ca6686e27ab4e2f18db7.png)
【Docker实战】jenkins卡在编译Dockerfile的问题
我们的项目是标准的CI/CD流程,也即是GitlabJenkinsHarborDocker的容器自动化部署。 经历了上上周的docker灾难,上周的服务器磁盘空间灾难,这次又发生了jenkins卡住的灾难。 当然,这些灾难有一定的连锁反应,是先发生的d…...
![](https://www.ngui.cc/images/no-images.jpg)
rust 多线程分发数据
use std::sync::{Arc, Mutex}; use std::collections::VecDeque; use std::thread::{self, sleep}; use rand::Rng; use std::time::Duration;fn main() {let list: Arc<Mutex<VecDeque<String>>> Arc::new(Mutex::new(VecDeque::new()));// 创建修改线程le…...
![](https://img-blog.csdnimg.cn/direct/c6b994e77b0a46fa844fa1aefa155544.jpeg)
CentOS 7x 使用Docker 安装oracle11g完整方法
1.安装docker-ce 安装依赖的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2添加Docker的阿里云yum源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo更新软件包索引 yum makecache fast查看docker…...
![](https://img-blog.csdnimg.cn/direct/f869d8447ecf42d384b2b7f8660ff819.png)
DDP算法之线性化和二次近似(Linearization and Quadratic Approximation)
DDP算法线性化和二次近似 在DDP算法中,第三步是线性化系统动力学方程和二次近似代价函数。这一步是关键,它使得DDP能够递归地处理非线性最优控制问题。通过线性化和二次近似,我们将复杂的非线性问题转换为一系列简单的线性二次问题,逐步逼近最优解。通过这些线性化和二次近…...
![](https://www.ngui.cc/images/no-images.jpg)
Shellcode详解
Shellcode详解 一、Shellcode的特点二、Shellcode的类型三、Shellcode的工作原理四、防御措施五、常见的PHP Web Shell示例5.1 简单的命令执行5.2 更复杂的Web Shell5.3 防御措施5.4 实际案例 Shellcode是一种小巧、紧凑的机器代码,通常用于利用软件漏洞或注入攻击中…...
![](/images/no-images.jpg)
wordpress 3.7 xss/网站如何优化推广
一、一个页面上两个div左右铺满整个浏览器,要保证左边的div一直为100px,右边的div跟随浏览器大小变化(比如浏览器为500,右边div为400,浏览器为900,右边div为800),请写出大概的css代码…...
![](/images/no-images.jpg)
梧州网站建设服务商/seo手机关键词网址
标签:很多人做多年开发只懂得PHP能在浏览器下运行或者只能结合APACHE等WEB服务器运行,却不晓得,PHP也能用命令行执行,或许是由于大多人在WINDOWS平台做开发部署运行,比较少接触LINUX。THINKPHP 在5.0对cli支持比较好&a…...
![](/images/no-images.jpg)
玩具公司网站建设方案/济南网络优化网址
题目大意 给你一颗边带权值的树,求树上的每一点距离其最远的一个点的距离 分析 经典的树形DP题。由于对于一个节点来说,可能得到的距离最大的值的路径来自他的子树,或者从他的父节点过来,所以用两次DFS。 但是有个问题就是判断一个…...
![](/images/no-images.jpg)
网站建设那里/seo描述快速排名
我的最新文章《 使用CSS和JavaScript圆角》刚刚出版。 它介绍了实现圆角的各种方法,包括老式的表破解,两种CSS方法以及使用JavaScript修改DOM并提供额外CSS钩子的新技术。 这种演示性JavaScript尚未引起太多讨论。 由于事后JavaScript可以对文档的结构进…...
![](https://img-blog.csdnimg.cn/20181126193641141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODY4MTQ5,size_16,color_FFFFFF,t_70)
上海网站建设网站游戏/杭州百度推广电话
一、Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二、Nginx安装 1、下载Nginx及相关组件 Linux系统是Centos 6.5 64位&…...
![](/images/no-images.jpg)
wordpress theme framework/内容营销是什么意思
在mysql中 可以update table set time_columnfrom_unixtime(time_column);转载于:https://www.cnblogs.com/youlechang123/archive/2013/06/08/3125540.html...