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 bd5ca58ff3b815404f2f1da9e2e60796b9daa761..d0714fa37829c13fea171fcb5a750bd1e70e4bb2 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