修复长时间星历下载状态错误的问题
authorCaisking <Casiking@zhihuishixun.com>
Fri, 16 Jan 2026 11:31:57 +0000 (19:31 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Fri, 16 Jan 2026 11:31:57 +0000 (19:31 +0800)
code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp
code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp

index b1bfef3..8b7cd60 100644 (file)
 #include "gnss_http_server.h"
 #endif
 
-//最长的有效期 目前为2天
-#define MAX_VALIDITY_PERIOD 2 * 24 * 60
+//最长的有效期 目前为7天
+#define MAX_VALIDITY_PERIOD 7 * 24 * 60
 
 namespace OHOS {
 
-EphemerisDownloadModel::EphemerisDownloadModel() {}
+EphemerisDownloadModel::EphemerisDownloadModel() 
+  : ephemerisDownloadStatus(EphemerisDownloadStatus::NOT_DOWNLOADED) {
+  // 初始化时检查星历数据是否有效,如果有效则更新状态
+#if defined(SUPPORT_GNSS)
+  if (GetValidityPeriod()) {
+    ephemerisDownloadStatus = EphemerisDownloadStatus::DOWNLOADED;
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "EphemerisDownloadModel: 检测到有效星历数据,状态设置为已下载");
+  }
+#endif
+}
 
 EphemerisDownloadModel::~EphemerisDownloadModel() {}
 
index 40c3bc2..368d801 100644 (file)
@@ -205,13 +205,26 @@ UILabelExt *EphemerisDownloadView::GetValidityPeriodLabel() {
 // 更新下载状态显示
 void EphemerisDownloadView::UpdateDownloadStatus() {
     if (labelStatusValue_ == nullptr) return;
-    //如果有效期大于0,则显示下载成功
+    
+    // 先同步状态:如果有效期有效,确保状态为已下载
     if(EphemerisDownloadModel::GetInstance().GetValidityPeriod())
     {
+        // 如果有效期有效,但状态不是已下载,则更新状态
+        if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus() != EphemerisDownloadStatus::DOWNLOADED)
+        {
+            EphemerisDownloadModel::GetInstance().SetEphemerisDownloadStatus(EphemerisDownloadStatus::DOWNLOADED);
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateDownloadStatus: 同步状态为已下载");
+        }
         labelStatusValue_->SetText("数据有效");
     }
     else
     {
+        // 如果有效期无效,但状态是已下载,则更新状态
+        if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus() == EphemerisDownloadStatus::DOWNLOADED)
+        {
+            EphemerisDownloadModel::GetInstance().SetEphemerisDownloadStatus(EphemerisDownloadStatus::NOT_DOWNLOADED);
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateDownloadStatus: 同步状态为未下载");
+        }
         labelStatusValue_->SetText("未下载");
     }
 }