diff --git a/services/ans/src/liveview_all_scenarios_extension_wrapper.cpp b/services/ans/src/liveview_all_scenarios_extension_wrapper.cpp index 335098997879d54e9bbb4ce53479fc735f9d4895..392d5335cf1af13116c7261ee633de4a9c503e4c 100644 --- a/services/ans/src/liveview_all_scenarios_extension_wrapper.cpp +++ b/services/ans/src/liveview_all_scenarios_extension_wrapper.cpp @@ -24,7 +24,10 @@ LiveviewAllScenariosExtensionWrapper::LiveviewAllScenariosExtensionWrapper() { InitExtentionWrapper(); } -LiveviewAllScenariosExtensionWrapper::~LiveviewAllScenariosExtensionWrapper() = default; +LiveviewAllScenariosExtensionWrapper::~LiveviewAllScenariosExtensionWrapper() +{ + CloseExtentionWrapper(); +} void LiveviewAllScenariosExtensionWrapper::InitExtentionWrapper() { @@ -58,7 +61,10 @@ void LiveviewAllScenariosExtensionWrapper::CloseExtentionWrapper() if (ExtensionHandle_ != nullptr) { dlclose(ExtensionHandle_); ExtensionHandle_ = nullptr; + updateLiveviewReminderFlags_ = nullptr; + updateLiveviewVoiceContent_ = nullptr; } + ANS_LOGI("liveview all scenarios extension wrapper close success"); } ErrCode LiveviewAllScenariosExtensionWrapper::UpdateLiveviewReminderFlags(const sptr &request) diff --git a/services/distributed/src/soft_bus/distributed_liveview_all_scenarios_extension_wrapper.cpp b/services/distributed/src/soft_bus/distributed_liveview_all_scenarios_extension_wrapper.cpp index 7d4112e565a983e2e12bfec6c18a7e3f86f2bf42..944310a1b9512b1e81be6b108877f7055bacc594 100644 --- a/services/distributed/src/soft_bus/distributed_liveview_all_scenarios_extension_wrapper.cpp +++ b/services/distributed/src/soft_bus/distributed_liveview_all_scenarios_extension_wrapper.cpp @@ -20,8 +20,15 @@ namespace OHOS::Notification { const std::string DISTRIBUTED_EXTENTION_LIVEVIEW_ALL_SCENARIOS_PATH = "libliveview.z.so"; -DistributedLiveviewAllScenariosExtensionWrapper::DistributedLiveviewAllScenariosExtensionWrapper() = default; -DistributedLiveviewAllScenariosExtensionWrapper::~DistributedLiveviewAllScenariosExtensionWrapper() = default; +DistributedLiveviewAllScenariosExtensionWrapper::DistributedLiveviewAllScenariosExtensionWrapper() +{ + InitExtentionWrapper(); +} + +DistributedLiveviewAllScenariosExtensionWrapper::~DistributedLiveviewAllScenariosExtensionWrapper() +{ + CloseExtentionWrapper(); +} void DistributedLiveviewAllScenariosExtensionWrapper::InitExtentionWrapper() { @@ -60,7 +67,11 @@ void DistributedLiveviewAllScenariosExtensionWrapper::CloseExtentionWrapper() if (ExtensionHandle_ != nullptr) { dlclose(ExtensionHandle_); ExtensionHandle_ = nullptr; + triggerHandler_ = nullptr; + updateLiveviewEncodeContent_ = nullptr; + updateLiveviewDecodeContent_ = nullptr; } + ANS_LOGI("distributed liveview all scenarios extension wrapper close success"); } ErrCode DistributedLiveviewAllScenariosExtensionWrapper::UpdateLiveviewEncodeContent( diff --git a/services/distributed/src/soft_bus/distributed_manager.cpp b/services/distributed/src/soft_bus/distributed_manager.cpp index aac4475f120a721dcd88ac6d4703e3bdefb8d8cd..e27c23006396d068ef665890a84ea431b3b24d3b 100644 --- a/services/distributed/src/soft_bus/distributed_manager.cpp +++ b/services/distributed/src/soft_bus/distributed_manager.cpp @@ -46,7 +46,6 @@ int32_t DistributedManager::InitLocalDevice(const std::string &deviceId, uint16_ const DistributedDeviceConfig config) { ANS_LOGI("InitLocalDevice %{public}s %{public}d.", StringAnonymous(deviceId).c_str(), (int32_t)(deviceType)); - DISTRIBUTED_LIVEVIEW_ALL_SCENARIOS_EXTENTION_WRAPPER->InitExtentionWrapper(); DistributedLocalConfig::GetInstance().SetLocalDevice(config); return DistributedService::GetInstance().InitService(deviceId, deviceType); } @@ -64,7 +63,6 @@ void DistributedManager::AddDevice(const std::string &deviceId, uint16_t deviceT void DistributedManager::ReleaseDevice(const std::string &deviceId, uint16_t deviceType) { ANS_LOGI("ReleaseDevice %{public}s %{public}d.", StringAnonymous(deviceId).c_str(), (int32_t)(deviceType)); - DISTRIBUTED_LIVEVIEW_ALL_SCENARIOS_EXTENTION_WRAPPER->CloseExtentionWrapper(); DistributedClient::GetInstance().ReleaseDevice(deviceId, deviceType); DistributedService::GetInstance().UnSubscribeNotifictaion(deviceId, deviceType); }