From 292b77a414b8307020c7e9ba17ef00182003e31b Mon Sep 17 00:00:00 2001 From: cutePikachu <1439925662@qq.com> Date: Sat, 25 May 2024 16:15:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BD=91=E7=BB=9C=E7=8A=B6=E6=80=81=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: cutePikachu <1439925662@qq.com> --- .../include/network_search_state.h | 1 + .../src/network_search_state.cpp | 29 ++++++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/services/network_search/include/network_search_state.h b/services/network_search/include/network_search_state.h index 0b95301a7..743456d89 100755 --- a/services/network_search/include/network_search_state.h +++ b/services/network_search/include/network_search_state.h @@ -69,6 +69,7 @@ private: bool imsRegStatus_ = false; int32_t slotId_ = 0; std::unique_ptr imsServiceStatus_ = nullptr; + bool updateDelay_ = false; }; } // namespace Telephony } // namespace OHOS diff --git a/services/network_search/src/network_search_state.cpp b/services/network_search/src/network_search_state.cpp index b5e988098..6a3c8e9b1 100755 --- a/services/network_search/src/network_search_state.cpp +++ b/services/network_search/src/network_search_state.cpp @@ -304,12 +304,12 @@ void NetworkSearchState::NotifyPsRegStatusChange() return; } - if (networkState_->GetPsRegStatus() == RegServiceState::REG_STATE_IN_SERVICE && - networkStateOld_->GetPsRegStatus() != RegServiceState::REG_STATE_IN_SERVICE) { + if (updateDelay_ || (networkState_->GetPsRegStatus() == RegServiceState::REG_STATE_IN_SERVICE && + networkStateOld_->GetPsRegStatus() != RegServiceState::REG_STATE_IN_SERVICE)) { networkSearchManager->NotifyPsConnectionAttachedChanged(slotId_); } - if (networkState_->GetPsRegStatus() != RegServiceState::REG_STATE_IN_SERVICE && - networkStateOld_->GetPsRegStatus() == RegServiceState::REG_STATE_IN_SERVICE) { + if (updateDelay_ || (networkState_->GetPsRegStatus() != RegServiceState::REG_STATE_IN_SERVICE && + networkStateOld_->GetPsRegStatus() == RegServiceState::REG_STATE_IN_SERVICE)) { networkSearchManager->NotifyPsConnectionDetachedChanged(slotId_); } } @@ -326,12 +326,12 @@ void NetworkSearchState::NotifyPsRoamingStatusChange() TELEPHONY_LOGE("NotifyPsRoamingStatusChange networkState_ is null slotId:%{public}d", slotId_); return; } - if (networkState_->GetPsRoamingStatus() > RoamingType::ROAMING_STATE_UNKNOWN && - networkStateOld_->GetPsRoamingStatus() == RoamingType::ROAMING_STATE_UNKNOWN) { + if (updateDelay_ || (networkState_->GetPsRoamingStatus() > RoamingType::ROAMING_STATE_UNKNOWN && + networkStateOld_->GetPsRoamingStatus() == RoamingType::ROAMING_STATE_UNKNOWN)) { networkSearchManager->NotifyPsRoamingOpenChanged(slotId_); } - if (networkStateOld_->GetPsRoamingStatus() > RoamingType::ROAMING_STATE_UNKNOWN && - networkState_->GetPsRoamingStatus() == RoamingType::ROAMING_STATE_UNKNOWN) { + if (updateDelay_ || (networkStateOld_->GetPsRoamingStatus() > RoamingType::ROAMING_STATE_UNKNOWN && + networkState_->GetPsRoamingStatus() == RoamingType::ROAMING_STATE_UNKNOWN)) { networkSearchManager->NotifyPsRoamingCloseChanged(slotId_); } } @@ -349,7 +349,7 @@ void NetworkSearchState::NotifyPsRadioTechChange() return; } - if (networkState_->GetPsRadioTech() != networkStateOld_->GetPsRadioTech()) { + if (updateDelay_ || networkState_->GetPsRadioTech() != networkStateOld_->GetPsRadioTech()) { networkSearchManager->UpdatePhone(slotId_, networkState_->GetCsRadioTech(), networkState_->GetPsRadioTech()); networkSearchManager->SendUpdateCellLocationRequest(slotId_); networkSearchManager->NotifyPsRatChanged(slotId_); @@ -368,7 +368,7 @@ void NetworkSearchState::NotifyEmergencyChange() TELEPHONY_LOGE("NotifyEmergencyChange networkState_ is null slotId:%{public}d", slotId_); return; } - if (networkState_->IsEmergency() != networkStateOld_->IsEmergency()) { + if (updateDelay_ || (networkState_->IsEmergency() != networkStateOld_->IsEmergency())) { if (networkState_->IsEmergency()) { networkSearchManager->NotifyEmergencyOpenChanged(slotId_); } else { @@ -390,7 +390,7 @@ void NetworkSearchState::NotifyNrStateChange() return; } - if (networkState_->GetNrState() != networkStateOld_->GetNrState()) { + if (updateDelay_ || (networkState_->GetNrState() != networkStateOld_->GetNrState())) { networkSearchManager->NotifyNrStateChanged(slotId_); } } @@ -422,7 +422,7 @@ void NetworkSearchState::NotifyStateChange() TELEPHONY_EXT_WRAPPER.updateNetworkStateExt_(slotId_, networkState_); } - if (!(*networkState_ == *networkStateOld_)) { + if (updateDelay_ || !(*networkState_ == *networkStateOld_)) { TELEPHONY_LOGI( "NetworkSearchState::StateCheck isNetworkStateChange notify to app... slotId:%{public}d", slotId_); sptr ns = new NetworkState; @@ -437,6 +437,9 @@ void NetworkSearchState::NotifyStateChange() if (TELEPHONY_EXT_WRAPPER.processStateChangeExt_ != nullptr) { bool needDelay = TELEPHONY_EXT_WRAPPER.processStateChangeExt_(slotId_, ns); if (needDelay) { + networkState_->Marshalling(data); + networkStateOld_->ReadFromParcel(data); + updateDelay_ = true; return; } } @@ -474,7 +477,7 @@ void NetworkSearchState::CsRadioTechChange() return; } - if (networkState_->GetCsRadioTech() != networkStateOld_->GetCsRadioTech()) { + if (updateDelay_ || networkState_->GetCsRadioTech() != networkStateOld_->GetCsRadioTech()) { networkSearchManager->UpdatePhone(slotId_, networkState_->GetCsRadioTech(), networkState_->GetPsRadioTech()); } }