diff --git a/services/abilitymgr/src/ability_connect_manager.cpp b/services/abilitymgr/src/ability_connect_manager.cpp index b8de965590b73d4dc7b01e8e95dbe773d92e7d1e..a63b6bf42f038553db6efcd9ff48582d0c99fde4 100644 --- a/services/abilitymgr/src/ability_connect_manager.cpp +++ b/services/abilitymgr/src/ability_connect_manager.cpp @@ -747,6 +747,12 @@ int AbilityConnectManager::AttachAbilityThreadLocked( HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); std::lock_guard guard(Lock_); auto abilityRecord = GetExtensionFromServiceMapInner(token); + if (abilityRecord == nullptr) { + abilityRecord = GetExtensionFromTerminatingMapInner(token); + if (abilityRecord != nullptr && !IsUIExtensionAbility(abilityRecord)) { + abilityRecord = nullptr; + } + } CHECK_POINTER_AND_RETURN(abilityRecord, ERR_INVALID_VALUE); if (taskHandler_ != nullptr) { int recordId = abilityRecord->GetRecordId();