diff --git a/services/abilitymgr/include/mission_list_manager.h b/services/abilitymgr/include/mission_list_manager.h index 331dbbdb5a4e2299a0c39399c18228b490c9546e..6c7d2486714deb92cfba3337f16f1e33c874ad4e 100644 --- a/services/abilitymgr/include/mission_list_manager.h +++ b/services/abilitymgr/include/mission_list_manager.h @@ -110,7 +110,7 @@ public: * @param missionId the given missionId * @return the mission of the given id */ - std::shared_ptr GetMissionById(int missionId) const; + std::shared_ptr GetMissionById(int missionId, bool containsLauncher) const; /** * @brief Terminate ability with the given abilityRecord diff --git a/services/abilitymgr/src/mission_list_manager.cpp b/services/abilitymgr/src/mission_list_manager.cpp index 2746ac91b0febe1eeb73d3dfd125b43ac9b75f0c..e1e309b6c208447cfc748fa10b921adc50b84c38 100644 --- a/services/abilitymgr/src/mission_list_manager.cpp +++ b/services/abilitymgr/src/mission_list_manager.cpp @@ -579,11 +579,17 @@ std::shared_ptr MissionListManager::GetAbilityRecordByToken( return defaultStandardList_->GetAbilityRecordByToken(token); } -std::shared_ptr MissionListManager::GetMissionById(int missionId) const +std::shared_ptr MissionListManager::GetMissionById(int missionId, bool containsLauncher) const { std::shared_ptr mission = nullptr; for (auto missionList : currentMissionLists_) { - if (missionList && (mission = missionList->GetMissionById(missionId)) != nullptr) { + if (!missionList) { + continue; + } + if (!containsLauncher && missionList->GetType() == MissionListType::LAUNCHER) { + continue; + } + if ((mission = missionList->GetMissionById(missionId)) != nullptr) { return mission; } } @@ -592,10 +598,6 @@ std::shared_ptr MissionListManager::GetMissionById(int missionId) const return mission; } - if ((mission = launcherList_->GetMissionById(missionId)) != nullptr) { - return mission; - } - return defaultStandardList_->GetMissionById(missionId); } @@ -983,7 +985,7 @@ int MissionListManager::ClearMission(int missionId) return ERR_INVALID_VALUE; } std::lock_guard guard(managerLock_); - auto mission = GetMissionById(missionId); + auto mission = GetMissionById(missionId, false); return ClearMissionLocked(missionId, mission); } @@ -1064,7 +1066,7 @@ int MissionListManager::SetMissionLockedState(int missionId, bool lockedState) HILOG_ERROR("param is invalid"); return MISSION_NOT_FOUND; } - std::shared_ptr mission = GetMissionById(missionId); + std::shared_ptr mission = GetMissionById(missionId, false); if (mission) { mission->SetLockedState(lockedState); // update inner mission info time @@ -1177,7 +1179,7 @@ void MissionListManager::OnAbilityDied(std::shared_ptr abilityRec std::shared_ptr MissionListManager::GetTargetMissionList(int missionId, std::shared_ptr &mission) { - mission = GetMissionById(missionId); + mission = GetMissionById(missionId, true); if (mission) { HILOG_DEBUG("get mission by id successfully, missionId: %{public}d", missionId); auto missionList = mission->GetMissionList();