切换多用户时,优化切换输入法的逻辑

Signed-off-by: zhouyongfei <zhouyongfei@huawei.com>
This commit is contained in:
zhouyongfei
2022-02-21 15:26:46 +08:00
parent cbd953a27b
commit b4f5c51d9c
+8 -5
View File
@@ -547,27 +547,30 @@ namespace MiscServices {
IMSA_HILOGE("Aborted! %s\n", ErrorCode::ToString(ErrorCode::ERROR_BAD_PARAMETERS));
return ErrorCode::ERROR_BAD_PARAMETERS;
}
std::string defaultIme = ParaHandle::GetDefaultIme(userId_);
std::string currentDefaultIme = ParaHandle::GetDefaultIme(userId_);
int32_t userId = msg->msgContent_->ReadInt32();
userId_ = userId;
IMSA_HILOGI("InputMethodSystemAbility::OnUserStarted userId = %{public}u", userId);
std::string newDefaultIme = ParaHandle::GetDefaultIme(userId_);
if (newDefaultIme != currentDefaultIme) {
StopInputService(currentDefaultIme);
StartInputService(newDefaultIme);
}
PerUserSetting *setting = GetUserSetting(userId);
if (setting != nullptr) {
IMSA_HILOGE("Aborted! %s %d\n", ErrorCode::ToString(ErrorCode::ERROR_USER_ALREADY_STARTED), userId);
return ErrorCode::ERROR_USER_ALREADY_STARTED;
}
StopInputService(defaultIme);
setting = new PerUserSetting(userId);
setting->Initialize();
PerUserSession *session = new PerUserSession(userId);
userSettings.insert(std::pair<int32_t, PerUserSetting*>(userId, setting));
userSessions.insert(std::pair<int32_t, PerUserSession*>(userId, session));
defaultIme = ParaHandle::GetDefaultIme(userId_);
StartInputService(defaultIme);
return ErrorCode::NO_ERROR;
}