From 8c7ca19fbcbf55c22d18e19b044661259ff05b43 Mon Sep 17 00:00:00 2001 From: l00814634 Date: Tue, 10 Mar 2026 11:36:46 +0800 Subject: [PATCH] =?UTF-8?q?cpp=5Fcrash=E5=9C=BA=E6=99=AF=E4=BD=BF=E8=83=BD?= =?UTF-8?q?APPrecover?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I91fc242be6587e77d0b8e1f5c3a3ab812c0af695 Signed-off-by: tsuk1ii --- frameworks/native/ability/native/recovery/app_recovery.cpp | 5 +++-- .../kits/native/ability/native/recovery/app_recovery.h | 1 + services/abilitymgr/src/ability_manager_service.cpp | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) 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");