diff --git a/services/aams/include/accessible_ability_manager_service.h b/services/aams/include/accessible_ability_manager_service.h index 276b27a44..a5d27c3fa 100644 --- a/services/aams/include/accessible_ability_manager_service.h +++ b/services/aams/include/accessible_ability_manager_service.h @@ -286,6 +286,7 @@ private: sptr configCallbackDeathRecipient_ = nullptr; sptr bundleManagerDeathRecipient_ = nullptr; std::vector> stateCallbacks_; + std::mutex mutex_; }; } // namespace Accessibility } // namespace OHOS diff --git a/services/aams/src/accessible_ability_manager_service.cpp b/services/aams/src/accessible_ability_manager_service.cpp index b350982f7..d7ac7514c 100644 --- a/services/aams/src/accessible_ability_manager_service.cpp +++ b/services/aams/src/accessible_ability_manager_service.cpp @@ -291,10 +291,13 @@ uint32_t AccessibleAbilityManagerService::RegisterStateObserver( return; } callback->AsObject()->AddDeathRecipient(stateCallbackDeathRecipient_); - auto iter = std::find(stateCallbacks_.begin(), stateCallbacks_.end(), callback); - if (iter == stateCallbacks_.end()) { - stateCallbacks_.push_back(callback); - HILOG_INFO("RegisterStateObserver successfully"); + { + std::lock_guard lock(mutex_); + auto iter = std::find(stateCallbacks_.begin(), stateCallbacks_.end(), callback); + if (iter == stateCallbacks_.end()) { + stateCallbacks_.push_back(callback); + HILOG_INFO("RegisterStateObserver successfully"); + } } sptr accountData = GetCurrentAccountData();