From 4d8da36a506d18af14709a9152b595dca25eb67c Mon Sep 17 00:00:00 2001 From: sun-xinyan Date: Thu, 17 Jul 2025 15:31:06 +0800 Subject: [PATCH] support navigation dispose lifeCycle Signed-off-by: sun-xinyan --- .../native/implementation/nav_extender_accessor.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frameworks/core/interfaces/native/implementation/nav_extender_accessor.cpp b/frameworks/core/interfaces/native/implementation/nav_extender_accessor.cpp index 206d3e51c51..9c11a42bf7c 100644 --- a/frameworks/core/interfaces/native/implementation/nav_extender_accessor.cpp +++ b/frameworks/core/interfaces/native/implementation/nav_extender_accessor.cpp @@ -18,6 +18,7 @@ #include "core/components_ng/base/frame_node.h" #include "core/components_ng/pattern/navigation/navigation_group_node.h" #include "core/components_ng/pattern/navigation/navigation_pattern.h" +#include "core/components_ng/syntax/static/detached_free_root_proxy_node.h" #include "core/interfaces/native/implementation/nav_path_info_peer_impl.h" #include "core/interfaces/native/implementation/nav_path_stack_peer_impl.h" #include "core/interfaces/native/utility/converter.h" @@ -78,7 +79,13 @@ void SetNavDestinationNodeImpl(Ark_NavPathStack peer, auto stack = peer->GetNavPathStack(); CHECK_NULL_VOID(stack); int32_t curIndex = Converter::Convert(index); - stack->AddCustomNode(curIndex, Referenced::Claim(reinterpret_cast(node))); + auto container = Container::Current(); + CHECK_NULL_VOID(container); + auto instanceId = container->GetInstanceId(); + auto proxyNode = AceType::MakeRefPtr(instanceId); + CHECK_NULL_VOID(proxyNode); + proxyNode->AddChild(Referenced::Claim(reinterpret_cast(node))); + stack->AddCustomNode(curIndex, proxyNode); } void SetNavigationModeImpl(Ark_NativePointer navigation, Ark_NavigationMode mode) -- Gitee