diff --git a/common/utils/include/constants.h b/common/utils/include/constants.h index d9add7a7efe84648dee6cb5d7da68c037950a5ac..11ad4183d81b163401345d81290d8e434e66ace0 100644 --- a/common/utils/include/constants.h +++ b/common/utils/include/constants.h @@ -35,6 +35,7 @@ namespace DistributedHardware { constexpr int32_t MODE_ENABLE = 0; constexpr int32_t MODE_DISABLE = 1; constexpr uint32_t MAX_SWITCH_SIZE = 256; + constexpr uint32_t DISTRIBUTED_HARDWARE_FWK_SA_ID = 4801; const std::string LOW_LATENCY_KEY = "identity"; const std::u16string DHMS_STUB_INTERFACE_TOKEN = u"ohos.distributedhardware.accessToken"; const std::string COMPONENTSLOAD_PROFILE_PATH = diff --git a/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp b/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp index 1ed0dfd802cfb0db5e949def129045f4e0d2cc32..010872f7384873819d4255b9923a4972a0db2f9b 100644 --- a/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp +++ b/services/distributedhardwarefwkservice/src/distributed_hardware_manager_factory.cpp @@ -33,6 +33,7 @@ #include "distributed_hardware_errno.h" #include "distributed_hardware_log.h" #include "distributed_hardware_manager.h" +#include "iservice_registry.h" namespace OHOS { namespace DistributedHardware { @@ -76,7 +77,16 @@ void DistributedHardwareManagerFactory::CheckExitSAOrNot() HiSysEventWriteMsg(DHFWK_EXIT_END, OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR, "dhfwk sa exit end."); - _Exit(0); + auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (systemAbilityMgr != nullptr) { + int32_t ret = systemAbilityMgr->UnloadSystemAbility(DISTRIBUTED_HARDWARE_FWK_SA_ID); + if (ret != DH_FWK_SUCCESS) { + DHLOGE("systemAbilityMgr UnLoadSystemAbility failed, ret: %d", ret); + } + DHLOGI("systemAbilityMgr UnLoadSystemAbility success"); + } else { + DHLOGE("systemAbilityMgr is nullptr."); + } } DHLOGI("After uninit, DM report devices online, reinit"); diff --git a/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn b/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn index 307ba0d388c5486169ff3dfc97b41c7b435fd6fe..d62f0ad5acc1f48db317eefe08d0f20e1e595881 100644 --- a/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn +++ b/services/distributedhardwarefwkservice/test/unittest/common/accessmanager/BUILD.gn @@ -65,6 +65,7 @@ ohos_unittest("AccessManagerTest") { external_deps = [ "c_utils:utils", "init:libbegetutil", + "samgr:samgr_proxy", ] }