From 2825f4a0a3677dbf7be98db7f7d73dc6f5ee36fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=AB=E5=BF=B5?= Date: Thu, 28 Aug 2025 16:14:13 +0800 Subject: [PATCH 1/3] 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 别念 --- .../src/cloud_disk/io_message_listener.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp b/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp index 8bf0b017a..292669bb1 100644 --- a/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp +++ b/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp @@ -168,8 +168,16 @@ void IoMessageManager::OnReceiveEvent(const AppExecFwk::AppStateData &appStateDa if (appStateData.state == TYPE_FRONT) { lastestAppStateData = appStateData; if (!ioThread.joinable()) { - isThreadRunning.store(true); - ioThread = thread(&IoMessageManager::RecordIoData, this); + try { + isThreadRunning.store(true); + ioThread = thread(&IoMessageManager::RecordIoData, this); + } catch (const std::system_error &e) { + LOGE("System error while creating thread: %{public}s", e.what()); + isThreadRunning.store(false); + } catch (const std::exception &e) { + LOGE("Exception while creating thread: %{public}s", e.what()); + isThreadRunning.store(false); + } } return; } -- Gitee From 7e689595cf5d0197eca85530871c7652adbe71af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=AB=E5=BF=B5?= Date: Fri, 29 Aug 2025 10:58:45 +0800 Subject: [PATCH 2/3] 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 别念 --- .../src/cloud_disk/io_message_listener.cpp | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp b/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp index 292669bb1..cefb5c42c 100644 --- a/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp +++ b/services/cloudfiledaemon/src/cloud_disk/io_message_listener.cpp @@ -164,34 +164,35 @@ void IoMessageManager::RecordIoData() void IoMessageManager::OnReceiveEvent(const AppExecFwk::AppStateData &appStateData) { - if (appStateData.bundleName != DESK_BUNDLE_NAME) { - if (appStateData.state == TYPE_FRONT) { - lastestAppStateData = appStateData; - if (!ioThread.joinable()) { - try { - isThreadRunning.store(true); - ioThread = thread(&IoMessageManager::RecordIoData, this); - } catch (const std::system_error &e) { - LOGE("System error while creating thread: %{public}s", e.what()); - isThreadRunning.store(false); - } catch (const std::exception &e) { - LOGE("Exception while creating thread: %{public}s", e.what()); - isThreadRunning.store(false); - } - } - return; - } - if (appStateData.state == TYPE_BACKGROUND) { - if (ioThread.joinable()) { - lock_guard lock(cvMute); + if (appStateData.bundleName == DESK_BUNDLE_NAME) { + return; + } + if (appStateData.state == TYPE_FRONT) { + lastestAppStateData = appStateData; + if (!ioThread.joinable()) { + try { + isThreadRunning.store(true); + ioThread = thread(&IoMessageManager::RecordIoData, this); + } catch (const std::system_error &e) { + LOGE("System error while creating thread: %{public}s", e.what()); + isThreadRunning.store(false); + } catch (const std::exception &e) { + LOGE("Exception while creating thread: %{public}s", e.what()); isThreadRunning.store(false); - sleepCv.notify_all(); - ioThread.join(); - ioThread = thread(); - currentData = {}; - preData = {}; } } + return; + } + if (appStateData.state == TYPE_BACKGROUND) { + if (ioThread.joinable()) { + lock_guard lock(cvMute); + isThreadRunning.store(false); + sleepCv.notify_all(); + ioThread.join(); + ioThread = thread(); + currentData = {}; + preData = {}; + } } } } // namespace CloudDisk -- Gitee From 293a5edc747a31423625b2ca35a536859e9737a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=AB=E5=BF=B5?= Date: Mon, 1 Sep 2025 19:48:41 +0800 Subject: [PATCH 3/3] 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 别念 --- .../cloud_disk/io_message_listener_test.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/unittests/cloud_disk/io_message_listener_test.cpp b/test/unittests/cloud_disk/io_message_listener_test.cpp index 89faf55bb..a47900c77 100644 --- a/test/unittests/cloud_disk/io_message_listener_test.cpp +++ b/test/unittests/cloud_disk/io_message_listener_test.cpp @@ -1338,4 +1338,25 @@ HWTEST_F(IoMessageListenerTest, OnReceiveEventTest005, TestSize.Level1) GTEST_LOG_(INFO) << "OnReceiveEventTest005 End"; } +/** + * @tc.name: OnReceiveEventTest006 + * @tc.desc: Read IO data + * @tc.type: FUNC + * @tc.require: issuesI92WQP + */ +HWTEST_F(IoMessageListenerTest, OnReceiveEventTest006, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "OnReceiveEventTest006 Start"; + try { + AppExecFwk::AppStateData appStateData; + appStateData.bundleName = "com.ohos.sceneboard"; + ioMessageManager_->OnReceiveEvent(appStateData); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "OnReceiveEventTest006 ERROR"; + } + GTEST_LOG_(INFO) << "OnReceiveEventTest006 End"; +} + } // namespace OHOS::FileManagement::CloudDisk::Test \ No newline at end of file -- Gitee