From 7733cb41411e70064729f9d3f1d7c4ae3c427cff Mon Sep 17 00:00:00 2001 From: zhushuanghong Date: Fri, 12 Sep 2025 14:55:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhushuanghong --- frameworks/src/background_task_manager.cpp | 1 + services/BUILD.gn | 2 ++ services/common/src/data_storage_helper.cpp | 14 ++++++++++++-- .../continuous_task/src/bg_continuous_task_mgr.cpp | 11 +++++++---- .../continuous_task/src/continuous_task_record.cpp | 8 +++++++- .../src/resource_application_record.cpp | 8 +++++++- 6 files changed, 36 insertions(+), 8 deletions(-) diff --git a/frameworks/src/background_task_manager.cpp b/frameworks/src/background_task_manager.cpp index 366f037f..7b3d76dc 100644 --- a/frameworks/src/background_task_manager.cpp +++ b/frameworks/src/background_task_manager.cpp @@ -367,6 +367,7 @@ ErrCode BackgroundTaskManager::GetEfficiencyResourcesInfos(std::vector lock(mutex_); if (proxy_ != nullptr) { return true; } diff --git a/services/BUILD.gn b/services/BUILD.gn index ee01af71..0b835eae 100644 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -57,6 +57,7 @@ BgTaskMgrServicecSrc = [ ] ohos_shared_library("bgtaskmgr_service") { + configs = [ "//build/config/compiler:exceptions" ] branch_protector_ret = "pac_ret" sanitize = { cfi = true @@ -141,6 +142,7 @@ ohos_shared_library("bgtaskmgr_service") { } ohos_static_library("bgtaskmgr_service_static") { + configs = [ "//build/config/compiler:exceptions" ] cflags_cc = [ "-DBGTASK_MGR_UNIT_TEST" ] sources = BgTaskMgrServicecSrc diff --git a/services/common/src/data_storage_helper.cpp b/services/common/src/data_storage_helper.cpp index a6a888f8..0a0f43b5 100644 --- a/services/common/src/data_storage_helper.cpp +++ b/services/common/src/data_storage_helper.cpp @@ -71,7 +71,13 @@ ErrCode DataStorageHelper::RefreshTaskRecord(const std::unordered_mapsuspendState_) { + if (continuousTaskInfosMap_[taskInfoMapKey] != nullptr && continuousTaskInfosMap_[taskInfoMapKey]->suspendState_) { HandleActiveContinuousTask(continuousTaskRecord->uid_, continuousTaskRecord->pid_, taskInfoMapKey); } OnContinuousTaskChanged(iter->second, ContinuousTaskEventTriggerType::TASK_UPDATE); @@ -964,7 +964,8 @@ ErrCode BgContinuousTaskMgr::StartBackgroundRunningInner(std::shared_ptrbgModeIds_); } if (continuousTaskInfosMap_.find(taskInfoMapKey) != continuousTaskInfosMap_.end()) { - if (continuousTaskInfosMap_[taskInfoMapKey]->suspendState_) { + if (continuousTaskInfosMap_[taskInfoMapKey] != nullptr && + continuousTaskInfosMap_[taskInfoMapKey]->suspendState_) { HandleActiveContinuousTask(continuousTaskRecord->uid_, continuousTaskRecord->pid_, taskInfoMapKey); return ERR_OK; } @@ -1485,8 +1486,10 @@ void BgContinuousTaskMgr::HandleSuspendContinuousTask(int32_t uid, int32_t pid, break; } // 暂停状态取消长时任务通知 - NotificationTools::GetInstance()->CancelNotification(continuousTaskInfosMap_[key]->GetNotificationLabel(), - continuousTaskInfosMap_[key]->GetNotificationId()); + if (continuousTaskInfosMap_[key] != nullptr) { + NotificationTools::GetInstance()->CancelNotification(continuousTaskInfosMap_[key]->GetNotificationLabel(), + continuousTaskInfosMap_[key]->GetNotificationId()); + } // 对SA来说,暂停状态等同于取消 HandleAppContinuousTaskStop(uid); } diff --git a/services/continuous_task/src/continuous_task_record.cpp b/services/continuous_task/src/continuous_task_record.cpp index 143d3638..fec161e1 100644 --- a/services/continuous_task/src/continuous_task_record.cpp +++ b/services/continuous_task/src/continuous_task_record.cpp @@ -182,7 +182,13 @@ std::string ContinuousTaskRecord::ParseToJsonStr() root["isCombinedTaskNotification"] = isCombinedTaskNotification_; root["combinedNotificationTaskId"] = combinedNotificationTaskId_; root["isByRequestObject"] = isByRequestObject_; - return root.dump(CommonUtils::jsonFormat_); + std::string jsonStr = ""; + try { + jsonStr = root.dump(CommonUtils::jsonFormat_); + } catch (...) { + BGTASK_LOGE("failed to convert to string."); + } + return jsonStr; } bool CheckContinuousRecod(const nlohmann::json &value) diff --git a/services/efficiency_resources/src/resource_application_record.cpp b/services/efficiency_resources/src/resource_application_record.cpp index b3eada4e..30c27953 100644 --- a/services/efficiency_resources/src/resource_application_record.cpp +++ b/services/efficiency_resources/src/resource_application_record.cpp @@ -60,7 +60,13 @@ std::string ResourceApplicationRecord::ParseToJsonStr() { nlohmann::json root; ParseToJson(root); - return root.dump(CommonUtils::jsonFormat_); + std::string jsonStr = ""; + try { + jsonStr = root.dump(CommonUtils::jsonFormat_); + } catch (...) { + BGTASK_LOGE("failed to convert to string."); + } + return jsonStr; } void ResourceApplicationRecord::ParseToJson(nlohmann::json &root) -- Gitee