From 8f2f1a40a8330359e7bcfd06432ccfdae0f734df Mon Sep 17 00:00:00 2001 From: zhutianyi Date: Wed, 29 Jun 2022 16:20:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhutianyi --- services/timer/src/timer_manager.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/services/timer/src/timer_manager.cpp b/services/timer/src/timer_manager.cpp index 0d0111b..7152a48 100644 --- a/services/timer/src/timer_manager.cpp +++ b/services/timer/src/timer_manager.cpp @@ -569,12 +569,13 @@ void TimerManager::CallbackAlarmIfNeed(std::shared_ptr alarm) return; } TIME_HILOGI(TIME_MODULE_SERVICE, "Alarm is proxy!"); - if (proxyMap_.count(uid) == 0) { + auto itMap = proxyMap_.find(uid); + if (itMap == proxyMap_.end()) { std::vector> timeInfoVec; timeInfoVec.push_back(alarm); proxyMap_[uid] = timeInfoVec; } else { - std::vector> timeInfoVec = proxyMap_[uid]; + std::vector> timeInfoVec = itMap->second; timeInfoVec.push_back(alarm); proxyMap_[uid] = timeInfoVec; } @@ -586,19 +587,22 @@ bool TimerManager::ProxyTimer(int32_t uid, bool isProxy) TIME_HILOGD(TIME_MODULE_SERVICE, "start"); if (isProxy) { proxyUids_.insert(uid); + return true; } else { - if (proxyUids_.count(uid) > 0) { + auto it = proxyUids_.find(uid); + if (it != proxyUids_.end()) { proxyUids_.erase(uid); } else { TIME_HILOGE(TIME_MODULE_SERVICE, "Uid: %{public}d doesn't exist in the proxy list." PRId64 "", uid); return false; } - if (proxyMap_.count(uid) > 0) { - auto timeInfoVec = proxyMap_[uid]; + auto itMap = proxyMap_.find(uid); + if (itMap != proxyMap_.end()) { + auto timeInfoVec = itMap->second; for (auto alarm : timeInfoVec) { if (!alarm->callback) { TIME_HILOGE(TIME_MODULE_SERVICE, "Callback is nullptr!"); - return false; + continue; } alarm->callback(alarm->id); TIME_HILOGD(TIME_MODULE_SERVICE, "Shut down proxy, proxyUid: %{public}d, alarmId: %{public}" PRId64 "", @@ -619,7 +623,7 @@ bool TimerManager::ResetAllProxy() for (auto alarm : timeInfoVec) { if (!alarm->callback) { TIME_HILOGE(TIME_MODULE_SERVICE, "Callback is nullptr!"); - return false; + continue; } alarm->callback(alarm->id); TIME_HILOGD(TIME_MODULE_SERVICE, "Reset all proxy, proxyUid: %{public}d, alarmId: %{public}" PRId64 "",