From 6a87acbb5824c1fe4df1c3f47d5be228ffda3803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E5=B0=8F=E6=9E=97?= Date: Sun, 17 Aug 2025 15:56:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4mainHandler=E7=9A=84=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I40f3427887d5d07d694ca25d8c4e58f892ff9fba Signed-off-by: 姜小林 --- .../js/src/common/ani_helper/ani_helper.h | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/interfaces/kits/js/src/common/ani_helper/ani_helper.h b/interfaces/kits/js/src/common/ani_helper/ani_helper.h index bd5ca58ff..d0714fa37 100644 --- a/interfaces/kits/js/src/common/ani_helper/ani_helper.h +++ b/interfaces/kits/js/src/common/ani_helper/ani_helper.h @@ -33,12 +33,6 @@ namespace OHOS::FileManagement::ModuleFileIO::ANI { using namespace std; using namespace OHOS::FileManagement::ModuleFileIO::ANI::AniSignature; -inline shared_ptr &GetMainHandler() -{ - thread_local shared_ptr mainHandler; - return mainHandler; -} - class AniHelper { public: template @@ -182,17 +176,9 @@ public: } auto &mainHandler = GetMainHandler(); - if (mainHandler == nullptr) { - shared_ptr runner = OHOS::AppExecFwk::EventRunner::GetMainEventRunner(); - if (!runner) { - HILOGE("get main event runner failed!"); - return false; - } - mainHandler = CreateSharedPtr(runner); - if (mainHandler == nullptr) { - HILOGE("Failed to request heap memory."); - return false; - } + if (!mainHandler) { + HILOGE("mainHandler is not initialized!"); + return false; } bool succ = mainHandler->PostTask(func, "", 0, OHOS::AppExecFwk::EventQueue::Priority::HIGH, {}); if (!succ) { @@ -201,6 +187,23 @@ public: } return true; } + +private: + static std::shared_ptr &GetMainHandler() + { + static std::shared_ptr mainHandler = + []() -> std::shared_ptr { + auto runner = OHOS::AppExecFwk::EventRunner::GetMainEventRunner(); + if (runner) { + return CreateSharedPtr(runner); + } else { + HILOGE("Get main event runner failed when initializing mainHandler!"); + return nullptr; + } + }(); + + return mainHandler; + } }; } // namespace OHOS::FileManagement::ModuleFileIO::ANI -- Gitee