diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 886932d633f84bec8f5c159ab361fca159040c4f..7c6daa21cc0f4dcffce210b60623cec7c9ab882a 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -8796,7 +8796,11 @@ int AbilityManagerService::IsCallFromBackground(const AbilityRequest &abilityReq return ERR_OK; } auto abilityState = callerAbility->GetAbilityState(); - if (abilityState == AbilityState::BACKGROUND || abilityState == AbilityState::BACKGROUNDING) { + if (abilityState == AbilityState::BACKGROUND || abilityState == AbilityState::BACKGROUNDING || + // If uiability or uiextensionability ability state is foreground when terminate, + // it will move to background firstly. So if startAbility in onBackground() lifecycle, + // the actual ability state may be had changed to terminating from background or backgrounding. + abilityState == AbilityState::TERMINATING) { return ERR_OK; } } else {