diff --git a/frameworks/native/ability/native/recovery/app_recovery.cpp b/frameworks/native/ability/native/recovery/app_recovery.cpp index 11602c952f..be595c769e 100644 --- a/frameworks/native/ability/native/recovery/app_recovery.cpp +++ b/frameworks/native/ability/native/recovery/app_recovery.cpp @@ -51,7 +51,8 @@ std::atomic g_blocked = false; const int DELAY_TIME = 1000; AppRecovery::AppRecovery() : isEnable_(false), restartFlag_(RestartFlag::ALWAYS_RESTART), - saveOccasion_(SaveOccasionFlag::SAVE_WHEN_ERROR), saveMode_(SaveModeFlag::SAVE_WITH_FILE) + saveOccasion_(SaveOccasionFlag::SAVE_WHEN_ERROR), saveMode_(SaveModeFlag::SAVE_WITH_FILE), + crashFlag_(RestartFlag::NO_RESTART) { } @@ -144,7 +145,7 @@ bool AppRecovery::AddAbility(std::shared_ptr ability, ability->EnableAbilityRecovery(abilityRecovery, useAppSettedValue_.load()); abilityRecoverys_.push_back(abilityRecovery); std::shared_ptr abilityMgr = AAFwk::AbilityManagerClient::GetInstance(); - abilityMgr->SetAppRecoveryFlag(token_.promote(), restartFlag_); + abilityMgr->SetAppRecoveryFlag(token_.promote(), crashFlag_); return true; } diff --git a/interfaces/kits/native/ability/native/recovery/app_recovery.h b/interfaces/kits/native/ability/native/recovery/app_recovery.h index 9d705c0ead..f1ec15213a 100644 --- a/interfaces/kits/native/ability/native/recovery/app_recovery.h +++ b/interfaces/kits/native/ability/native/recovery/app_recovery.h @@ -75,6 +75,7 @@ private: uint16_t restartFlag_; uint16_t saveOccasion_; uint16_t saveMode_; + uint16_t crashFlag_; wptr token_; AAFwk::Want mainWant_; std::weak_ptr mainHandler_; diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index ea5da7c49b..93f21db586 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -16830,6 +16830,9 @@ void AbilityManagerService::HandleRecoveryRecipient( abilityRecord->GetAbilityInfo().bundleName.c_str(), restartFlag); + if (restartFlag == AppExecFwk::RestartFlag::NO_RESTART) { + return; + } if (restartFlag == AppExecFwk::RestartFlag::ALWAYS_RESTART || (restartFlag & AppExecFwk::RestartFlag::RESTART_WHEN_CPP_CRASH) != 0) { TAG_LOGD(AAFwkTag::ABILITYMGR, "enable OnAbilityRequestDone");