修复按键适配心率导致的死机
authorCaisking <3449750381@qq.com>
Fri, 5 Jul 2024 07:31:04 +0000 (15:31 +0800)
committerCaisking <3449750381@qq.com>
Fri, 5 Jul 2024 07:31:04 +0000 (15:31 +0800)
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartCheckView.cpp
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartView.cpp

index 1c58fc9..27556ee 100644 (file)
@@ -78,10 +78,13 @@ namespace OHOS
     }
     void HeartCheckView::UpShowHeartText()
     {
-        uint16_t heart_ = HeartModel::GetInstance()->GetShowHeartdata();
-        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetHeartData %d", heart_);
-        std::string bloodoxygenStr = std::to_string(heart_);
-        HeartText->SetText(bloodoxygenStr.c_str());
+        // 防止访问空的Text
+        if (HeartText != nullptr)
+        {
+            uint16_t heart_ = HeartModel::GetInstance()->GetShowHeartdata();
+            std::string bloodoxygenStr = std::to_string(heart_);
+            HeartText->SetText(bloodoxygenStr.c_str());
+        }
     }
     UIScrollView *HeartCheckView::HeartCheckViewInit()
     {
index 180bc25..b82bcbb 100644 (file)
@@ -143,7 +143,10 @@ namespace OHOS
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
         {
             // 关闭心率检测
-            HeartModel::GetInstance()->Heart_Control(HeartState::End,HeartCheck::INITIATIVE);
+            HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::INITIATIVE);
+            // 复原标志位
+            startheart = true;
+            HeartModel::GetInstance()->Heart_Stop();
             // 回退
             NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_ZOOM);
         }
@@ -208,7 +211,7 @@ namespace OHOS
                 HeartCheckView::GetInstance()->GetImageAnimator()->Stop();
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus false");
                 // 关闭心率检测
-                HeartModel::GetInstance()->Heart_Control(HeartState::End,HeartCheck::INITIATIVE);
+                HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::INITIATIVE);
                 startheart = true;
             }
         }
@@ -226,8 +229,8 @@ namespace OHOS
             {
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetCheckStatus true");
                 // 开启心率检测 [UI优先级最高直接打断正在检测 重新检测]
-                HeartModel::GetInstance()->Heart_Control(HeartState::End,HeartCheck::INITIATIVE);
-                HeartModel::GetInstance()->Heart_Control(HeartState::Start,HeartCheck::INITIATIVE);
+                HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::INITIATIVE);
+                HeartModel::GetInstance()->Heart_Control(HeartState::Start, HeartCheck::INITIATIVE);
                 startheart = false;
             }
         }
index 8f4c432..3138a2d 100644 (file)
@@ -61,6 +61,7 @@ namespace OHOS
     HeartView::~HeartView()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartView::~HeartView");
+
         HeartScrollView[HEARTVIEW]->RemoveAll();
         UIView::OnDragListener *draglistener = HeartScrollView[HEARTVIEW]->GetOnDragListener();
         if (draglistener != nullptr)
@@ -86,7 +87,7 @@ namespace OHOS
         heartcheck = nullptr;
         heartbandoff = nullptr;
         heartresult = nullptr;
-        
+
         delete HeartScrollView[HEARTVIEW];
         HeartScrollView[HEARTVIEW] = nullptr;
     }
@@ -98,6 +99,11 @@ namespace OHOS
     {
         // 更新心率数据
         uint8_t heart = HeartModel::GetInstance()->GetHeartdata();
+
+        // 防止访问空组件
+        if (percent == nullptr || timeLabel == nullptr)
+            return;
+
         if (heart != 0) // 判断是否为默认数据
         {
             // 更新心率数据