Android10.0-多用户切换流程源码分析
多用户切换流程
代码路径:packages/apps/Settings/src/com/android/settings/users/UserSettings.java
切换新用户流程:
1.多用户下点击事件
public boolean onPreferenceClick(Preference pref)
2.这段代码机主用户下切换新用户:
else if (pref instanceof UserPreference) {
1061 int userId = ((UserPreference) pref).getUserId();
1062 // Get the latest status of the user
1063 UserInfo user = mUserManager.getUserInfo(userId);
1064 if (!isInitialized(user)) {
未初始化点击新用户,mHandler发送消息,消息id:MESSAGE_SETUP_USER
1065 mHandler.sendMessage(mHandler.obtainMessage(
1066 MESSAGE_SETUP_USER, user.id, user.serialNumber));
1067 }
1068 }
3.mHandler收到 MESSAGE_SETUP_USER消息
mHandler handleMessage(Message msg)
MESSAGE_SETUP_USER:
4.调用创建新用户方法
onUserCreated(int userId)
5.显示对话框
showDialog(DIALOG_SETUP_USER)
6.创建所有显示的对话框
public Dialog onCreateDialog(int dialogId)
对话框id:DIALOG_SETUP_USER
根据userId切换新用户
switchUserNow(int userId)
7.执行代码
ActivityManager.getService().switchUser(userId);
移除用户流程:
对话框id:DIALOG_CONFIRM_REMOVE:
移除其他用户切换机主用户
removeThisUser()
执行代码
ActivityManager.getService().switchUser(UserHandle.USER_SYSTEM);
getContext().getSystemService(UserManager.class).removeUser(UserHandle.myUserId());
本文地址:https://blog.csdn.net/u010871962/article/details/108993011
推荐阅读
-
104 - kube-scheduler源码分析 - predicate整体流程
-
MapReduce之Job提交流程源码和切片源码分析
-
Android10.0-多用户切换流程源码分析
-
Android Service的启动流程源码分析
-
Okhttp3源码解析(3)-Call分析(整体流程)
-
Camera Open 流程源码分析
-
源码分析 RateLimiter SmoothBursty 实现原理(文末附流程图)
-
Springboot 的一些基础源码分析 (一)SpringApplication执行流程
-
Fabric源码分析之三启动流程代Orderer分析
-
Fabric源码分析之三启动流程代码Peer分析