当前位置: 首页 > news >正文

【AAOS】【源码分析】用户管理(二)-- 用户启动

用户大体流程:用户启动过程中,涉及很多模块,其中UserController模块负责居中调度

  • 创建并启动主用户:系统在首次启动时自动创建 User 0,在SystemReady时,由 SystemServer 启动系统用户(User 0),主用户是以Background方式运行,在用户启动过程中发送一系列广播通知,包括:

    • android.intent.action.USER_STARTED:表示用户已经启动完成。

    • android.intent.action.USER_STARTING:表示用户启动过程即将开始。

  • 创建Secondary用户:CarUserService在启动时,会创建相应的Secondary用户(默认用户id为10),涉及的广播通知为:
    • android.intent.action.USER_ADDED:表示用户已经创建完成。
  • 启动Secondary用户:在用户创建完毕后,会直接启动Secondary用户,涉及的广播通知:
    • android.intent.action.USER_STARTED:表示用户已经启动完成。

    • android.intent.action.USER_STARTING:表示用户启动过程即将开始。

  • 解锁用户在用户启动后,调用maybeUnlockUser来解锁Secondary用户的父用户及Secondary用户,涉及的广播通知:

    • android.intent.action.USER_UNLOCKED:解锁主用户。

    • android.intent.action.USER_UNLOCKED:解锁Secondary用户。

  • 切换用户:解锁完毕后,会将Secondary用户切换为foreground,涉及的广播通知:

    • android.intent.action.USER_BACKGROUND:主用户切换为Background用户。

    • android.intent.action.USER_FOREGROUND:Secondary用户切换为Foreground。

    • android.intent.action.USER_SWITCHED:发送用户切换完毕通知。

配置项

  •  headless配置:系统属性ro.fw.mu.headless_system_user用于标识是否采用 Headless System User模式,针对AAOS,默认为true。

[ro.fw.mu.headless_system_user]: [true]
  • config_isMainUserPermanentAdmin: 用于指定主用户(通常是用户 0)是否应始终拥有设备管理员权限。

    • Car配置文件

packages/services/Car/car_product/rro/overlay-config/androidRRO/res/values/config.xml

<!-- Whether the main user is a permanent admin user. If the main user is a permanent admin userit can't be deleted or downgraded to non-admin status.This is generally only relevant on headless system user mode devices; on other devices, themain user is the system user which is always a permanent admin anyway. -->
<bool name="config_isMainUserPermanentAdmin">false</bool>

主要模块

模块图

模块描述

No.模块名称功能描述
1UserManager提供应用层 API,用于管理用户账户,如创建、删除和查询用户信息。
http://www.xdnf.cn/news/870229.html

相关文章:

  • APx500录制波形
  • Qt Creator工具编译器配置
  • Oj系统测试报告
  • 第3章(新)Day3-Python逻辑语句
  • Java 创建线程池的几种方式
  • Python基础:文件简单操作
  • OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()
  • 使用 useSearchParams 的一个没有触发控制台报错的错误用法
  • STL 库基础概念与示例
  • 洛谷每日1题-------Day39__P1697 [USACO18JAN] Lifeguards B
  • Vue 生命周期全解析:从创建到销毁的完整旅程
  • Redisson - 实现延迟队列
  • 通过ca证书的方式设置允许远程访问Docker服务
  • 吴恩达机器学习讲义概述
  • 在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生
  • 哈希表入门:用 C 语言实现简单哈希表(开放寻址法解决冲突)
  • 9.RV1126-OPENCV 视频的膨胀和腐蚀
  • 基于windows系统的netcore架构与SqlServer数据库,实现双机热备。
  • 基于javaweb的SpringBoot公司日常考勤系统设计与实现(源码+文档+部署讲解)
  • 新手小白深入 BCI:实践与进阶(下)
  • 函数调用(Function Calling)
  • 子网划分例题
  • 【Git 合并冲突解决记录:从 “refusing to merge unrelated histories“ 到批量冲突处理】
  • 《高等数学》(同济大学·第7版)第一章第七节无穷小的比较
  • leetcode题解236:二叉树的最近公共祖先
  • 多层感知器MLP实现非线性分类(原理)
  • UDP包大小与丢包率的关系:原理分析与优化实践
  • 语法--06-- 简单句五大形式、系动词
  • Qwen2.5-VL - Vision Transformer(ViT)的patch 处理
  • 固定资产管理系统 ——仙盟创梦IDE