From 18409bbbf55ec5033f54bf5561af70702f006e8f Mon Sep 17 00:00:00 2001 From: autumn330 Date: Fri, 19 Mar 2021 17:41:25 +0800 Subject: [PATCH] Do not generate ability record while the top ability is same as the startup. --- .../abilitymgr_lite/src/ability_stack_manager.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/services/abilitymgr_lite/src/ability_stack_manager.cpp b/services/abilitymgr_lite/src/ability_stack_manager.cpp index 404211d..43190e5 100644 --- a/services/abilitymgr_lite/src/ability_stack_manager.cpp +++ b/services/abilitymgr_lite/src/ability_stack_manager.cpp @@ -48,11 +48,18 @@ PageAbilityRecord *AbilityStackManager::GeneratePageAbility(const AbilityInfo &t if (targetMission == nullptr) { targetMission = new AbilityMissionRecord(stack, target.bundleName); stack->PushTopMissionRecord(*targetMission); + targetAbility = new PageAbilityRecord(target, want); + targetMission->PushPageAbility(*targetAbility); } else { + PageAbilityRecord *targetTopAbility = const_cast(targetMission->GetTopPageAbility()); + if (targetTopAbility != nullptr && targetTopAbility->IsSamePageAbility(want)) { + targetAbility = targetTopAbility; + } else { + targetAbility = new PageAbilityRecord(target, want); + targetMission->PushPageAbility(*targetAbility); + } stack->MoveMissionRecordToTop(*targetMission); } - targetAbility = new PageAbilityRecord(target, want); - targetMission->PushPageAbility(*targetAbility); } // default jumps to default, then return to default -- Gitee