From f16ed9de2637405e61f52e750c5248b4bdea7189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=98=89=E5=AE=9D?= Date: Fri, 28 Feb 2025 17:42:02 +0800 Subject: [PATCH 1/6] commit msg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄嘉宝 --- .../include/collect/common_event_collect.h | 2 + .../source/collect/common_event_collect.cpp | 40 +++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/services/samgr/native/include/collect/common_event_collect.h b/services/samgr/native/include/collect/common_event_collect.h index 017bab80..d1342a41 100644 --- a/services/samgr/native/include/collect/common_event_collect.h +++ b/services/samgr/native/include/collect/common_event_collect.h @@ -82,6 +82,8 @@ private: std::mutex saExtraDataIdLock_; std::map> saExtraDataIdMap_; std::atomic isAwakeNotified_ {false}; + std::atomic_flag isTriggerTaskStart_ = ATOMIC_FLAG_INIT; + std::atomic isCancel_{false}; }; class CommonEventListener : public SystemAbilityStatusChangeStub { diff --git a/services/samgr/native/source/collect/common_event_collect.cpp b/services/samgr/native/source/collect/common_event_collect.cpp index d350a732..fe436249 100644 --- a/services/samgr/native/source/collect/common_event_collect.cpp +++ b/services/samgr/native/source/collect/common_event_collect.cpp @@ -543,23 +543,39 @@ int32_t CommonEventCollect::RemoveUnusedEvent(const OnDemandEvent& event) void CommonEventCollect::StartReclaimIpcThreadWork(const EventFwk::CommonEventData& data) { + const char* triggerEvent = nullptr; std::string eventName = data.GetWant().GetAction(); std::string eventType = data.GetData(); - if (workHandler_ == nullptr) { - HILOGE("StartReclaimIpcThreadWork workHandler_ is nullptr"); - return; - } - - if (eventName == COMMON_RECENT_EVENT && eventType == COMMON_RECENT_CLEAR_ALL) { - auto task = [this]() { - this->SendKernalReclaimIpcThread(); - }; - workHandler_->PostTask(task, TRIGGER_THREAD_RECLAIM_DELAY_TIME); - } + if (eventName == EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_OFF) { + triggerEvent = SCREEN_TRIGGER_THREAD_RECLAIM; + isCancel_ = false; + } else if (eventName == EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_ON) { + isCancel_ = true; + } else if (eventName == COMMON_RECENT_EVENT && eventType == COMMON_RECENT_CLEAR_ALL) { + triggerEvent = CLEAR_TRIGGER_THREAD_RECLAIM; + isCancel_ = true; + SendKernalReclaimIpcThread(triggerEvent); + } + + if (triggerEvent != nullptr && isTriggerTaskStart_.test_and_set(std::memory_order_acquire)) { + auto task = [this, triggerEvent]() { + for (int i = 0; i < TRIGGER_THREAD_RECLAIM_DELAY_TIME; i++) { + if (isCancel_) { + isTriggerTaskStart_.clear(); + return; + } + std::this_thread::sleep_for(std::chrono::seconds(1)); + } + this->SendKernalReclaimIpcThread(TriggerEvent); + isTriggerTaskStart_.clear(); + } + std::thread reclaimThread(task); + reclaimThread.detach(); + } } -void CommonEventCollect::SendKernalReclaimIpcThread() +void CommonEventCollect::SendKernalReclaimIpcThread(const char* triggerEvent) { HILOGI("TriggerSystemIPCThreadReclaim"); IPCSkeleton::TriggerSystemIPCThreadReclaim(); -- Gitee From 738bf2a792ac18e88e8d846aa94a6caa76da7736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=98=89=E5=AE=9D?= Date: Sat, 1 Mar 2025 12:09:15 +0800 Subject: [PATCH 2/6] commit msg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄嘉宝 --- .../source/collect/common_event_collect.cpp | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/services/samgr/native/source/collect/common_event_collect.cpp b/services/samgr/native/source/collect/common_event_collect.cpp index fe436249..3d535a65 100644 --- a/services/samgr/native/source/collect/common_event_collect.cpp +++ b/services/samgr/native/source/collect/common_event_collect.cpp @@ -41,8 +41,7 @@ constexpr uint32_t UNSUB_DELAY_TIME = 10 * 1000; constexpr int64_t MAX_EXTRA_DATA_ID = 1000000000; constexpr int32_t COMMON_EVENT_SERVICE_ID = 3299; constexpr int32_t TRIGGER_THREAD_RECLAIM_DELAY_TIME = 130 * 1000; -constexpr const char* SCREEN_TRIGGER_THREAD_RECLAIM = "SCREEN_TRIGGER_THREAD_RECLAIM"; -constexpr const char* CLEAR_TRIGGER_THREAD_RECLAIM = "CLEAR_TRIGGER_THREAD_RECLAIM"; +constexpr int32_t TRIGGER_THREAD_RECLAIM_DURATION_TIME = 1; constexpr const char* UID = "uid"; constexpr const char* NET_TYPE = "NetType"; constexpr const char* BUNDLE_NAME = "bundleName"; @@ -543,42 +542,43 @@ int32_t CommonEventCollect::RemoveUnusedEvent(const OnDemandEvent& event) void CommonEventCollect::StartReclaimIpcThreadWork(const EventFwk::CommonEventData& data) { - const char* triggerEvent = nullptr; + bool isTriggerEvent = false; std::string eventName = data.GetWant().GetAction(); std::string eventType = data.GetData(); if (eventName == EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_OFF) { - triggerEvent = SCREEN_TRIGGER_THREAD_RECLAIM; + isTriggerEvent = true; isCancel_ = false; } else if (eventName == EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_ON) { isCancel_ = true; } else if (eventName == COMMON_RECENT_EVENT && eventType == COMMON_RECENT_CLEAR_ALL) { - triggerEvent = CLEAR_TRIGGER_THREAD_RECLAIM; + isTriggerEvent = true; isCancel_ = true; - SendKernalReclaimIpcThread(triggerEvent); + HILOGI("TriggerSystemIPCThreadReclaim"); + IPCSkeleton::TriggerSystemIPCThreadReclaim(); } - if (triggerEvent != nullptr && isTriggerTaskStart_.test_and_set(std::memory_order_acquire)) { - auto task = [this, triggerEvent]() { - for (int i = 0; i < TRIGGER_THREAD_RECLAIM_DELAY_TIME; i++) { - if (isCancel_) { - isTriggerTaskStart_.clear(); - return; - } - std::this_thread::sleep_for(std::chrono::seconds(1)); - } - this->SendKernalReclaimIpcThread(TriggerEvent); - isTriggerTaskStart_.clear(); - } - std::thread reclaimThread(task); - reclaimThread.detach(); - } + if (isTriggerEvent && isTriggerTaskStart_.test_and_set(std::memory_order_acquire)) { + SendKernalReclaimIpcThread(); + } } -void CommonEventCollect::SendKernalReclaimIpcThread(const char* triggerEvent) +void CommonEventCollect::SendKernalReclaimIpcThread() { - HILOGI("TriggerSystemIPCThreadReclaim"); - IPCSkeleton::TriggerSystemIPCThreadReclaim(); + auto task = [this]() { + for (int i = 0; i < TRIGGER_THREAD_RECLAIM_DELAY_TIME; i++) { + if (isCancel_) { + isTriggerTaskStart_.clear(); + return; + } + std::this_thread::sleep_for(std::chrono::seconds(TRIGGER_THREAD_RECLAIM_DURATION_TIME)); + } + HILOGI("TriggerSystemIPCThreadReclaim"); + IPCSkeleton::TriggerSystemIPCThreadReclaim(); + isTriggerTaskStart_.clear(); + } + std::thread reclaimThread(task); + reclaimThread.detach(); } bool CommonHandler::PostTask(std::function func, uint64_t delayTime) -- Gitee From e2ccec4045e610facf4ffb4aff2b4e1b4f738558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=98=89=E5=AE=9D?= Date: Sat, 1 Mar 2025 15:05:48 +0800 Subject: [PATCH 3/6] commit msg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄嘉宝 --- services/samgr/native/source/collect/common_event_collect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/samgr/native/source/collect/common_event_collect.cpp b/services/samgr/native/source/collect/common_event_collect.cpp index 3d535a65..f50610e0 100644 --- a/services/samgr/native/source/collect/common_event_collect.cpp +++ b/services/samgr/native/source/collect/common_event_collect.cpp @@ -576,7 +576,7 @@ void CommonEventCollect::SendKernalReclaimIpcThread() HILOGI("TriggerSystemIPCThreadReclaim"); IPCSkeleton::TriggerSystemIPCThreadReclaim(); isTriggerTaskStart_.clear(); - } + }; std::thread reclaimThread(task); reclaimThread.detach(); } -- Gitee From 6443434c48ad8d94739687187198bfbefbc25eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=98=89=E5=AE=9D?= Date: Sat, 1 Mar 2025 21:01:07 +0800 Subject: [PATCH 4/6] commit msg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄嘉宝 --- .../native/include/collect/common_event_collect.h | 2 +- .../native/source/collect/common_event_collect.cpp | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/services/samgr/native/include/collect/common_event_collect.h b/services/samgr/native/include/collect/common_event_collect.h index d1342a41..983fb863 100644 --- a/services/samgr/native/include/collect/common_event_collect.h +++ b/services/samgr/native/include/collect/common_event_collect.h @@ -82,7 +82,7 @@ private: std::mutex saExtraDataIdLock_; std::map> saExtraDataIdMap_; std::atomic isAwakeNotified_ {false}; - std::atomic_flag isTriggerTaskStart_ = ATOMIC_FLAG_INIT; + std::atomic isTriggerTaskStart_ {false}; std::atomic isCancel_{false}; }; diff --git a/services/samgr/native/source/collect/common_event_collect.cpp b/services/samgr/native/source/collect/common_event_collect.cpp index f50610e0..7848770c 100644 --- a/services/samgr/native/source/collect/common_event_collect.cpp +++ b/services/samgr/native/source/collect/common_event_collect.cpp @@ -40,8 +40,8 @@ constexpr uint32_t REMOVE_EXTRA_DATA_DELAY_TIME = 300000; constexpr uint32_t UNSUB_DELAY_TIME = 10 * 1000; constexpr int64_t MAX_EXTRA_DATA_ID = 1000000000; constexpr int32_t COMMON_EVENT_SERVICE_ID = 3299; -constexpr int32_t TRIGGER_THREAD_RECLAIM_DELAY_TIME = 130 * 1000; -constexpr int32_t TRIGGER_THREAD_RECLAIM_DURATION_TIME = 1; +constexpr int32_t TRIGGER_THREAD_RECLAIM_DELAY_TIME = 130; +constexpr int32_t TRIGGER_THREAD_RECLAIM_DURATION_TIME = 2; constexpr const char* UID = "uid"; constexpr const char* NET_TYPE = "NetType"; constexpr const char* BUNDLE_NAME = "bundleName"; @@ -542,23 +542,23 @@ int32_t CommonEventCollect::RemoveUnusedEvent(const OnDemandEvent& event) void CommonEventCollect::StartReclaimIpcThreadWork(const EventFwk::CommonEventData& data) { - bool isTriggerEvent = false; + bool isTrigger = false; std::string eventName = data.GetWant().GetAction(); std::string eventType = data.GetData(); if (eventName == EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_OFF) { - isTriggerEvent = true; + isTrigger = true; isCancel_ = false; } else if (eventName == EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_ON) { isCancel_ = true; } else if (eventName == COMMON_RECENT_EVENT && eventType == COMMON_RECENT_CLEAR_ALL) { - isTriggerEvent = true; + isTrigger = true; isCancel_ = true; HILOGI("TriggerSystemIPCThreadReclaim"); IPCSkeleton::TriggerSystemIPCThreadReclaim(); } - if (isTriggerEvent && isTriggerTaskStart_.test_and_set(std::memory_order_acquire)) { + if (isTrigger && isTriggerTaskStart_.test_and_set(std::memory_order_acquire)) { SendKernalReclaimIpcThread(); } } @@ -566,7 +566,7 @@ void CommonEventCollect::StartReclaimIpcThreadWork(const EventFwk::CommonEventDa void CommonEventCollect::SendKernalReclaimIpcThread() { auto task = [this]() { - for (int i = 0; i < TRIGGER_THREAD_RECLAIM_DELAY_TIME; i++) { + for (int i = 0; i < TRIGGER_THREAD_RECLAIM_DELAY_TIME; i+= TRIGGER_THREAD_RECLAIM_DURATION_TIME) { if (isCancel_) { isTriggerTaskStart_.clear(); return; -- Gitee From 31cd47ce6ef6d60c5afa835485321ca66d754647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=98=89=E5=AE=9D?= Date: Sat, 1 Mar 2025 21:07:20 +0800 Subject: [PATCH 5/6] commit msg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄嘉宝 --- services/samgr/native/source/collect/common_event_collect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/samgr/native/source/collect/common_event_collect.cpp b/services/samgr/native/source/collect/common_event_collect.cpp index 7848770c..183f491c 100644 --- a/services/samgr/native/source/collect/common_event_collect.cpp +++ b/services/samgr/native/source/collect/common_event_collect.cpp @@ -558,7 +558,7 @@ void CommonEventCollect::StartReclaimIpcThreadWork(const EventFwk::CommonEventDa IPCSkeleton::TriggerSystemIPCThreadReclaim(); } - if (isTrigger && isTriggerTaskStart_.test_and_set(std::memory_order_acquire)) { + if (isTrigger && !isTriggerTaskStart_.exchange(true)) { SendKernalReclaimIpcThread(); } } -- Gitee From 48b9a0b4178d274380c844ea30389d155f0957c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=98=89=E5=AE=9D?= Date: Sat, 1 Mar 2025 21:25:19 +0800 Subject: [PATCH 6/6] commit msg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 黄嘉宝 --- services/samgr/native/source/collect/common_event_collect.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/samgr/native/source/collect/common_event_collect.cpp b/services/samgr/native/source/collect/common_event_collect.cpp index 183f491c..2bb8bcb3 100644 --- a/services/samgr/native/source/collect/common_event_collect.cpp +++ b/services/samgr/native/source/collect/common_event_collect.cpp @@ -568,14 +568,14 @@ void CommonEventCollect::SendKernalReclaimIpcThread() auto task = [this]() { for (int i = 0; i < TRIGGER_THREAD_RECLAIM_DELAY_TIME; i+= TRIGGER_THREAD_RECLAIM_DURATION_TIME) { if (isCancel_) { - isTriggerTaskStart_.clear(); + isTriggerTaskStart_ = false; return; } std::this_thread::sleep_for(std::chrono::seconds(TRIGGER_THREAD_RECLAIM_DURATION_TIME)); } HILOGI("TriggerSystemIPCThreadReclaim"); IPCSkeleton::TriggerSystemIPCThreadReclaim(); - isTriggerTaskStart_.clear(); + isTriggerTaskStart_ = false; }; std::thread reclaimThread(task); reclaimThread.detach(); -- Gitee