From 3f3d1b2cf4cd40c5e237c1ccadb44b4cdea02b89 Mon Sep 17 00:00:00 2001 From: liwang <965027894@qq.com> Date: Mon, 8 Sep 2025 17:56:00 +0800 Subject: [PATCH] =?UTF-8?q?triggerSystemLiveView=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liwang <965027894@qq.com> --- frameworks/ets/ani/include/sts_notification_manager.h | 5 +++++ frameworks/ets/ani/src/manager/ani_local_live_view.cpp | 6 +++--- frameworks/ets/ani/src/sts_notification_manager.cpp | 4 +++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frameworks/ets/ani/include/sts_notification_manager.h b/frameworks/ets/ani/include/sts_notification_manager.h index a3ed873fe..7ea867de9 100644 --- a/frameworks/ets/ani/include/sts_notification_manager.h +++ b/frameworks/ets/ani/include/sts_notification_manager.h @@ -160,6 +160,11 @@ public: { return stsSubscriber_; } + + static StsNotificationLocalLiveViewSubscriber *GetSelfSubscriber() + { + return new (std::nothrow) StsNotificationLocalLiveViewSubscriber(); + } private: ani_env* GetAniEnv(); private: diff --git a/frameworks/ets/ani/src/manager/ani_local_live_view.cpp b/frameworks/ets/ani/src/manager/ani_local_live_view.cpp index 171720129..a677c8be4 100644 --- a/frameworks/ets/ani/src/manager/ani_local_live_view.cpp +++ b/frameworks/ets/ani/src/manager/ani_local_live_view.cpp @@ -54,8 +54,8 @@ void AniTriggerSystemLiveView( void AniSubscribeSystemLiveView(ani_env *env, ani_object subscriberObj) { ANS_LOGD("AniSubscribeSystemLiveView call"); - std::shared_ptr localLiveViewSubscriber - = std::make_shared(); + NotificationSts::StsNotificationLocalLiveViewSubscriber *localLiveViewSubscriber = + NotificationSts::StsNotificationLocalLiveViewSubscriber::GetSelfSubscriber(); if (localLiveViewSubscriber == nullptr) { OHOS::NotificationSts::ThrowError(env, OHOS::Notification::ERROR_INTERNAL_ERROR, NotificationSts::FindAnsErrMsg(OHOS::Notification::ERROR_INTERNAL_ERROR)); @@ -64,7 +64,7 @@ void AniSubscribeSystemLiveView(ani_env *env, ani_object subscriberObj) } localLiveViewSubscriber->SetStsNotificationLocalLiveViewSubscriber(env, subscriberObj); int returncode = OHOS::Notification::NotificationHelper::SubscribeLocalLiveViewNotification( - (*localLiveViewSubscriber.get()), false); + *localLiveViewSubscriber, false); if (returncode != ERR_OK) { int externalCode = NotificationSts::GetExternalCode(returncode); OHOS::NotificationSts::ThrowError(env, externalCode, NotificationSts::FindAnsErrMsg(externalCode)); diff --git a/frameworks/ets/ani/src/sts_notification_manager.cpp b/frameworks/ets/ani/src/sts_notification_manager.cpp index 496c1f8ba..b1324424e 100644 --- a/frameworks/ets/ani/src/sts_notification_manager.cpp +++ b/frameworks/ets/ani/src/sts_notification_manager.cpp @@ -334,7 +334,9 @@ void StsNotificationLocalLiveViewSubscriber::OnConnected() {} void StsNotificationLocalLiveViewSubscriber::OnDisconnected() -{} +{ + delete this; +} void StsNotificationLocalLiveViewSubscriber::OnDied() {} -- Gitee