安卓多用户学习笔记

本文介绍了Android系统从4.2版本开始引入的多用户功能。详细讲解了UserManager类和UserManagerService服务,包括用户创建、切换和删除的操作过程。在UserManagerService的构造函数中,会创建用户目录、解析用户列表并保存用户信息。多用户切换涉及进程杀掉、目标用户现场恢复以及一系列系统广播的发送。在定制多用户空间时,需要注意解密机制和广播监听。
摘要由CSDN通过智能技术生成

一.背景

多用户是Android4.2被引入的

二.用户创建切换删除

相关类(基于Android6.0来分析)

frameworks/base/core/java/android/os/UserManager.java
frameworks/base/services/core/java/com/android/server/pm/UserManagerService.java
frameworks/base/core/java/android/content/pm/UserInfo.java
frameworks/base/core/java/android/os/UserHandle.java
frameworks/base/core/java/com/android/server/pm/PackageManagerService.java
frameworks/base/core/java/com/android/server/wm/WindowManagerService.java
frameworks/base/core/java/com/android/server/am/ActivityManagerService.java
frameworks/base/core/java/android/os/Process.java

UserManager

 

UserManager可以称为 UMS 的代理对象,它通过IUserManager mService来与 UMS 进行进程间的通信。
UserManager是暴露出来的应用程序接口。对于普通应用程序,提供用户数查询,用户状态判断和用户序列号查询等基本功能。普通应用没有用户操作权限。
对于系统应用,UserManager提供了创建/删除/擦除用户、用户信息获取、用户句柄获取等用户操作的接口。
这些操作均由远程调用 UMS 服务的对应方法实现。

UserManagerService

UserManagerService:继承于IUserManager.Stub,PMS初始化对象时被创建UMS对象

UserManagerService构造函数如下:

206    /**
207     * Available for testing purposes.
208     */
209    private UserManagerService(Context context, PackageManagerService pm,
210            Object installLock, Object packagesLock,
211            File dataDir, File baseUserPath) {
212        mContext = context;
213        mPm = pm;
214        mInstallLock = installLock;
215        mPackagesLock = packagesLock;
216        mHandler = new MainHandler();
217        synchr
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值