From a9b9478d11417b53a66fe67fb308b500485b6269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=82=96=E8=91=9B?= Date: Fri, 8 Aug 2025 14:46:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8D=A1=E7=89=87=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=AE=A1=E6=8E=A7=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李肖葛 --- .../strategy/refresh_control_mgr.h | 5 +++++ .../form_app_upgrade_refresh_impl.cpp | 4 ++++ .../refresh_impl/form_host_refresh_impl.cpp | 4 ++++ .../form_net_conn_refresh_impl.cpp | 4 ++++ .../form_refresh_after_uncontrol_impl.cpp | 4 ++++ .../refresh_impl/form_timer_refresh_impl.cpp | 4 ++++ .../strategy/refresh_control_mgr.cpp | 20 +++++++++++++++++++ 7 files changed, 45 insertions(+) diff --git a/services/include/form_refresh/strategy/refresh_control_mgr.h b/services/include/form_refresh/strategy/refresh_control_mgr.h index 4d23ea5314..43ce9a2f20 100644 --- a/services/include/form_refresh/strategy/refresh_control_mgr.h +++ b/services/include/form_refresh/strategy/refresh_control_mgr.h @@ -60,6 +60,11 @@ public: */ bool IsHealthyControl(const FormRecord &record); + /** + * @brief Whether the form need fresh. + */ + bool IsNeedToFresh(FormRecord &record, bool isVisibleToFresh); + private: #ifdef RES_SCHEDULE_ENABLE bool isSystemOverload_ = false; diff --git a/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp index 5d2abba165..89f972ec5d 100644 --- a/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp @@ -49,6 +49,10 @@ int FormAppUpgradeRefreshImpl::RefreshFormRequest(RefreshData &data) return ERR_OK; } + if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + return ERR_OK; + } + if (data.record.isDataProxy) { FormProviderData formProviderData; std::string cacheData; diff --git a/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp index 2a30d66505..be337fc23f 100644 --- a/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp @@ -59,6 +59,10 @@ int FormHostRefreshImpl::RefreshFormRequest(RefreshData &data) return ERR_OK; } + if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + return ERR_OK; + } + FormRecord refreshRecord = FormDataMgr::GetInstance().GetFormAbilityInfo(data.record); ret = RefreshExecMgr::AskForProviderData(data.formId, refreshRecord, reqWant); if (ret != ERR_OK) { diff --git a/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp index 152747dffb..e281195edb 100644 --- a/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp @@ -62,6 +62,10 @@ int FormNetConnRefreshImpl::RefreshFormRequest(RefreshData &data) return ERR_OK; } + if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + return ERR_OK; + } + FormRecord refreshRecord = FormDataMgr::GetInstance().GetFormAbilityInfo(data.record); ret = RefreshExecMgr::AskForProviderData(data.formId, refreshRecord, reqWant); if (ret != ERR_OK) { diff --git a/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp b/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp index 0ebd23f0df..e5f248cafd 100644 --- a/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp @@ -54,6 +54,10 @@ int FormRefreshAfterUncontrolImpl::RefreshFormRequest(RefreshData &data) return ERR_OK; } + if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + return ERR_OK; + } + FormRecord refreshRecord = FormDataMgr::GetInstance().GetFormAbilityInfo(data.record); refreshRecord.isCountTimerRefresh = isCountTimerRefresh; refreshRecord.isTimerRefresh = isTimerRefresh; diff --git a/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp index 10bb364842..a3a9e89682 100644 --- a/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp @@ -86,6 +86,10 @@ int FormTimerRefreshImpl::DealRefresh(const RefreshData &data) return ERR_OK; } + if (!RefreshControlMgr::GetInstance().IsNeedToFresh(newData.record, false)) { + return ERR_OK; + } + FormRecord refreshRecord = FormDataMgr::GetInstance().GetFormAbilityInfo(newData.record); refreshRecord.isCountTimerRefresh = isCountTimerRefresh; refreshRecord.isTimerRefresh = isTimerRefresh; diff --git a/services/src/form_refresh/strategy/refresh_control_mgr.cpp b/services/src/form_refresh/strategy/refresh_control_mgr.cpp index 73ef34712c..8c67f5f70a 100644 --- a/services/src/form_refresh/strategy/refresh_control_mgr.cpp +++ b/services/src/form_refresh/strategy/refresh_control_mgr.cpp @@ -87,5 +87,25 @@ bool RefreshControlMgr::IsHealthyControl(const FormRecord &record) return false; } +bool RefreshControlMgr::IsNeedToFresh(FormRecord &record, bool isVisibleToFresh) +{ + bool isEnableRefresh = FormDataMgr::GetInstance().IsEnableRefresh(record.formId); + HILOG_INFO("isEnableRefresh is %{public}d", isEnableRefresh); + if (isEnableRefresh) { + return true; + } + HILOG_INFO("isVisibleToFresh is %{public}d, record.isVisible is %{public}d", isVisibleToFresh, record.isVisible); + if (isVisibleToFresh) { + if (!record.isVisible) { + FormRecordReport::GetInstance().IncreaseUpdateTimes(record.formId, + HiSysEventPointType::TYPE_INVISIBLE_INTERCEPT); + } + return record.isVisible; + } + bool isEnableUpdate = FormDataMgr::GetInstance().IsEnableUpdate(record.formId); + HILOG_INFO("isEnableUpdate is %{public}d", isEnableUpdate); + return isEnableUpdate; +} + } // namespace AppExecFwk } // namespace OHOS \ No newline at end of file -- Gitee From b5b1becce68a11a875376c309be410bba206057f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=82=96=E8=91=9B?= Date: Fri, 8 Aug 2025 15:16:22 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8D=A1=E7=89=87=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=AE=A1=E6=8E=A7=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李肖葛 --- .../form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp | 1 + .../src/form_refresh/refresh_impl/form_host_refresh_impl.cpp | 1 + .../src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp | 1 + .../refresh_impl/form_refresh_after_uncontrol_impl.cpp | 1 + .../src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp | 1 + 5 files changed, 5 insertions(+) diff --git a/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp index 89f972ec5d..a87fe9ff86 100644 --- a/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_app_upgrade_refresh_impl.cpp @@ -50,6 +50,7 @@ int FormAppUpgradeRefreshImpl::RefreshFormRequest(RefreshData &data) } if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + FormDataMgr::GetInstance().SetNeedRefresh(data.formId, true); return ERR_OK; } diff --git a/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp index be337fc23f..3de668147e 100644 --- a/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_host_refresh_impl.cpp @@ -60,6 +60,7 @@ int FormHostRefreshImpl::RefreshFormRequest(RefreshData &data) } if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + FormDataMgr::GetInstance().SetNeedRefresh(data.formId, true); return ERR_OK; } diff --git a/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp index e281195edb..be9f86919a 100644 --- a/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_net_conn_refresh_impl.cpp @@ -63,6 +63,7 @@ int FormNetConnRefreshImpl::RefreshFormRequest(RefreshData &data) } if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + FormDataMgr::GetInstance().SetNeedRefresh(data.formId, true); return ERR_OK; } diff --git a/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp b/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp index e5f248cafd..888430aabc 100644 --- a/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_refresh_after_uncontrol_impl.cpp @@ -55,6 +55,7 @@ int FormRefreshAfterUncontrolImpl::RefreshFormRequest(RefreshData &data) } if (!RefreshControlMgr::GetInstance().IsNeedToFresh(data.record, true)) { + FormDataMgr::GetInstance().SetNeedRefresh(data.formId, true); return ERR_OK; } diff --git a/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp b/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp index a3a9e89682..f1235fec01 100644 --- a/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp +++ b/services/src/form_refresh/refresh_impl/form_timer_refresh_impl.cpp @@ -87,6 +87,7 @@ int FormTimerRefreshImpl::DealRefresh(const RefreshData &data) } if (!RefreshControlMgr::GetInstance().IsNeedToFresh(newData.record, false)) { + FormDataMgr::GetInstance().SetNeedRefresh(newData.formId, true); return ERR_OK; } -- Gitee From 0782742dd742c263d4bb8c4d4cb46458860cb015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=82=96=E8=91=9B?= Date: Fri, 8 Aug 2025 16:10:23 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8D=A1=E7=89=87=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E7=AE=A1=E6=8E=A7=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 李肖葛 --- services/src/form_refresh/strategy/refresh_control_mgr.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/src/form_refresh/strategy/refresh_control_mgr.cpp b/services/src/form_refresh/strategy/refresh_control_mgr.cpp index 8c67f5f70a..0396f39a76 100644 --- a/services/src/form_refresh/strategy/refresh_control_mgr.cpp +++ b/services/src/form_refresh/strategy/refresh_control_mgr.cpp @@ -17,6 +17,8 @@ #include "fms_log_wrapper.h" #include "common/util/form_trust_mgr.h" +#include "data_center/form_data_mgr.h" +#include "data_center/form_record/form_record_report.h" #include "form_refresh/strategy/refresh_cache_mgr.h" #ifdef SUPPORT_POWER #include "power_mgr_client.h" -- Gitee