欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android10.0-多用户切换流程源码分析

程序员文章站 2023-01-31 14:46:16
多用户切换流程代码路径:packages/apps/Settings/src/com/android/settings/users/UserSettings.java切换新用户流程:1.多用户下点击事件public boolean onPreferenceClick(Preference pref)2.这段代码机主用户下切换新用户:else if (pref instanceof UserPrefe......

                                              多用户切换流程

代码路径: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

相关标签: FWK开发总结