diff --git a/interfaces/inner_api/napi/native_node_api.h b/interfaces/inner_api/napi/native_node_api.h index bea26bcb47b8f2a1233c0b41735a6e11520cdc73..ddea4adeebf41191013366cdf98e45e37769017e 100644 --- a/interfaces/inner_api/napi/native_node_api.h +++ b/interfaces/inner_api/napi/native_node_api.h @@ -62,6 +62,7 @@ typedef enum { NAPI_APP_STATE_SENSITIVE_START = 2, NAPI_APP_STATE_SENSITIVE_END = 3, NAPI_APP_STATE_COLD_START_FINISHED = 4, + NAPI_APP_STATE_WARM_START = 5, } NapiAppState; using NapiAppStateCallback = void (*)(int state, int64_t timestamp); diff --git a/native_engine/impl/ark/ark_idle_monitor.cpp b/native_engine/impl/ark/ark_idle_monitor.cpp index 0a01eb549742477220fe804c175d22ea05ffd4c9..319e814d84004d955fb01ed1db211f33757416b3 100644 --- a/native_engine/impl/ark/ark_idle_monitor.cpp +++ b/native_engine/impl/ark/ark_idle_monitor.cpp @@ -274,8 +274,12 @@ void ArkIdleMonitor::NotifyMainThreadTryCompressGCByBackground() void ArkIdleMonitor::SetStartTimerCallback() { JSNApi::SetStartIdleMonitorCallback([this]() { - this->IntervalMonitor(); - started_ = true; + // prevents duplicate invok to avoid deadlocks + if (!started_) { + HILOG_INFO("Running idle monitor call back task"); + this->IntervalMonitor(); + started_ = true; + } }); } diff --git a/native_engine/impl/ark/ark_native_engine.cpp b/native_engine/impl/ark/ark_native_engine.cpp index d2998813bf7e1f31ac5bef9d95651534992457e7..5bb70bdfb7b21eb2c91d061437d856ce33ca3657 100644 --- a/native_engine/impl/ark/ark_native_engine.cpp +++ b/native_engine/impl/ark/ark_native_engine.cpp @@ -2525,6 +2525,9 @@ void ArkNativeEngine::NotifyForceExpandState(int32_t value) DFXJSNApi::NotifyHighSensitive(vm_, false); interopAppState_.Notify(NAPI_APP_STATE_SENSITIVE_END); break; + case ForceExpandState::WARM_START: + DFXJSNApi::NotifyWarmStart(vm_); + interopAppState_.Notify(NAPI_APP_STATE_WARM_START); default: HILOG_ERROR("Invalid Force Expand State: %{public}d.", value); break; diff --git a/native_engine/impl/ark/ark_native_engine.h b/native_engine/impl/ark/ark_native_engine.h index f67b4b787e2dc1c48cf55677aea37c1363a6b544..ff53b4ca76325d75de2cae6abc881dbd99c8bf7a 100644 --- a/native_engine/impl/ark/ark_native_engine.h +++ b/native_engine/impl/ark/ark_native_engine.h @@ -99,6 +99,7 @@ enum class ForceExpandState : int32_t { FINISH_COLD_START = 0, START_HIGH_SENSITIVE, FINISH_HIGH_SENSITIVE, + WARM_START, }; enum class ModuleTypes : uint8_t {