diff --git a/services/ans/include/advanced_datashare_helper.h b/services/ans/include/advanced_datashare_helper.h index 192eca0e5b8b07a8c28e68fb71730799aa01a2a9..f5f0fd8cbd2334d45e04441eb18e2cd4b0fa1d66 100644 --- a/services/ans/include/advanced_datashare_helper.h +++ b/services/ans/include/advanced_datashare_helper.h @@ -39,7 +39,8 @@ public: std::string GetUnifiedGroupEnableUri() const; private: - std::shared_ptr CreateDataShareHelper(); + void CreateDataShareHelper(); + std::shared_ptr dataShareHelper_ = nullptr; }; } // namespace Notification } // namespace OHOS diff --git a/services/ans/src/advanced_datashare_helper.cpp b/services/ans/src/advanced_datashare_helper.cpp index 67989bcb07c1c49b399680ec2d4477f6510d0ce7..3fd1d5ed0e7f6bf7149d6d6d2f4611a7727c3a00 100644 --- a/services/ans/src/advanced_datashare_helper.cpp +++ b/services/ans/src/advanced_datashare_helper.cpp @@ -42,41 +42,38 @@ AdvancedDatashareHelper::AdvancedDatashareHelper() CreateDataShareHelper(); } -std::shared_ptr AdvancedDatashareHelper::CreateDataShareHelper() +void CreateDataShareHelper() { sptr saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); if (saManager == nullptr) { ANS_LOGE("The sa manager is nullptr."); - return nullptr; + return; } sptr remoteObj = saManager->GetSystemAbility(ADVANCED_NOTIFICATION_SERVICE_ABILITY_ID); if (remoteObj == nullptr) { ANS_LOGE("The remoteObj is nullptr."); - return nullptr; + return; } - return DataShare::DataShareHelper::Creator(remoteObj, SETTINGS_DATA_EXT_URI); + dataShareHelper_ = DataShare::DataShareHelper::Creator(remoteObj, SETTINGS_DATA_EXT_URI); } bool AdvancedDatashareHelper::Query(Uri &uri, const std::string &key, std::string &value) { - std::shared_ptr dataShareHelper = CreateDataShareHelper(); - if (dataShareHelper == nullptr) { + if (dataShareHelper_ == nullptr) { ANS_LOGE("The data share helper is nullptr."); return false; } DataShare::DataSharePredicates predicates; std::vector columns; predicates.EqualTo(ADVANCED_DATA_COLUMN_KEYWORD, key); - auto result = dataShareHelper->Query(uri, predicates, columns); + auto result = dataShareHelper_->Query(uri, predicates, columns); if (result == nullptr) { ANS_LOGE("Query error, result is null."); - dataShareHelper->Release(); return false; } if (result->GoToFirstRow() != DataShare::E_OK) { ANS_LOGE("Query failed, go to first row error."); result->Close(); - dataShareHelper->Release(); return false; } int32_t columnIndex; @@ -84,7 +81,6 @@ bool AdvancedDatashareHelper::Query(Uri &uri, const std::string &key, std::strin result->GetString(columnIndex, value); result->Close(); ANS_LOGD("Query success, value[%{public}s]", value.c_str()); - dataShareHelper->Release(); return true; }