From 5003e2b9f561b4236a6457c1d572f728a23beade Mon Sep 17 00:00:00 2001 From: blc Date: Mon, 12 May 2025 14:55:48 +0800 Subject: [PATCH] PostTask write ime cfg Signed-off-by: blc --- .../src/js_inputmethod_extension_context.cpp | 2 +- services/include/ime_cfg_manager.h | 2 ++ services/src/ime_cfg_manager.cpp | 16 ++++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/frameworks/kits/extension/src/js_inputmethod_extension_context.cpp b/frameworks/kits/extension/src/js_inputmethod_extension_context.cpp index 8dcd46bc7..76370c198 100644 --- a/frameworks/kits/extension/src/js_inputmethod_extension_context.cpp +++ b/frameworks/kits/extension/src/js_inputmethod_extension_context.cpp @@ -290,7 +290,7 @@ private: return connectResult; } - void CheckSerialNumber(int64_t serialNumber) + void CheckSerialNumber(int64_t &serialNumber) { if (serialNumber < INT64_MAX) { serialNumber++; diff --git a/services/include/ime_cfg_manager.h b/services/include/ime_cfg_manager.h index d299f6506..ec872544d 100644 --- a/services/include/ime_cfg_manager.h +++ b/services/include/ime_cfg_manager.h @@ -20,6 +20,7 @@ #include "input_method_utils.h" #include "serializable.h" +#include "event_handler.h" namespace OHOS { namespace MiscServices { struct ImePersistInfo : public Serializable { @@ -99,6 +100,7 @@ private: std::string PackageImeCfg(); std::recursive_mutex imeCfgLock_; std::vector imeConfigs_; + static std::shared_ptr serviceHandler_; }; } // namespace MiscServices } // namespace OHOS diff --git a/services/src/ime_cfg_manager.cpp b/services/src/ime_cfg_manager.cpp index 3253e2412..7c03a67ee 100644 --- a/services/src/ime_cfg_manager.cpp +++ b/services/src/ime_cfg_manager.cpp @@ -15,11 +15,13 @@ #include "ime_cfg_manager.h" #include "file_operator.h" +#include "task_manager.h" namespace OHOS { namespace MiscServices { namespace { constexpr const char *IME_CFG_FILE_PATH = "/data/service/el1/public/imf/ime_cfg.json"; } // namespace +std::shared_ptr ImeCfgManager::serviceHandler_; ImeCfgManager &ImeCfgManager::GetInstance() { static ImeCfgManager instance; @@ -53,9 +55,19 @@ void ImeCfgManager::WriteImeCfg() IMSA_HILOGE("failed to Package imeCfg!"); return; } - if (!FileOperator::Write(IME_CFG_FILE_PATH, content, O_CREAT | O_WRONLY | O_SYNC | O_TRUNC)) { - IMSA_HILOGE("failed to WriteJsonFile!"); + std::shared_ptr runner = AppExecFwk::EventRunner::Create("ImeCfgManager"); + serviceHandler_ = std::make_shared(runner); + if (serviceHandler_ == nullptr) { + IMSA_HILOGE("serviceHandler_ is nullptr!"); + return; } + auto task = [content]() { + IMSA_HILOGD("start WriteJsonFile!"); + if (!FileOperator::Write(IME_CFG_FILE_PATH, content, O_CREAT | O_WRONLY | O_SYNC | O_TRUNC)) { + IMSA_HILOGE("failed to WriteJsonFile!"); + } + }; + serviceHandler_->PostTask(task, "WriteImeCfg", 0, AppExecFwk::EventQueue::Priority::IMMEDIATE); } bool ImeCfgManager::ParseImeCfg(const std::string &content) -- Gitee