修复设置永不息屏,按键息屏后自动亮屏问题
authorxue <2144439972@qq.com>
Sat, 18 Apr 2026 09:44:46 +0000 (17:44 +0800)
committerxue <2144439972@qq.com>
Sat, 18 Apr 2026 09:44:46 +0000 (17:44 +0800)
code/sdk/application/wearable/ln/nativeapp/nativeui/thunderbird/src/ThunderBirdModel.cpp

index abb4f0e..0dbef42 100644 (file)
@@ -1872,27 +1872,23 @@ extern "C" {
             ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
         }
         
-        // 处理常亮屏刷新定时器(每5分钟刷新一次,避免1小时超时)
+        // 处理常亮屏刷新(每 5 分钟 cancel/reopen keepon,避免 1 小时超时;不设 LOS_Msleep,避免阻塞图形线程)
         if (m_alwaysOnRefreshActive) {
             m_alwaysOnRefreshTime++;
-            // TimeDisplayCallback每秒调用一次,300次=300秒=5分钟
             if (m_alwaysOnRefreshTime >= 300) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimeDisplayCallback: Refreshing screen always-on (45 minutes elapsed)");
-                //如果息屏则先亮屏
-                if (uapi_get_screen_state() == 0) {
-                    uapi_set_screen_on_api();
-                }        
-                // 先取消常亮屏(设置为0)
-                ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
-                
-                // 等待足够的时间,确保取消操作完成(异步操作需要时间)
-                // 由于 set_screen_set_keepon_timeout 是异步的,需要等待更长时间
-                LOS_Msleep(2000);
-                
-                // 重新设置常亮屏
-                ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
-                
-                m_alwaysOnRefreshTime = 0; // 重置计数器
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimeDisplayCallback: always-on keepon refresh (300s)");
+                if (m_stressTestDialogueActive) {
+                    if (uapi_get_screen_state() == 1) {
+                        uapi_set_screen_on_api();
+                    }
+                    ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
+                    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
+                } else if (uapi_get_screen_state() == 0) {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TimeDisplayCallback: always-on keepon refresh (never sleep mode)");
+                    ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);
+                    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);
+                }
+                m_alwaysOnRefreshTime = 0;
             }
         }
         
@@ -3589,9 +3585,9 @@ extern "C" {
     
     void ThunderBirdModel::StartAlwaysOnRefreshTimer()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlwaysOnRefreshTimer: Starting periodic refresh (every 50 minutes)");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlwaysOnRefreshTimer: keepon refresh every 300s (TimeDisplay tick)");
         m_alwaysOnRefreshActive = true;
-        m_alwaysOnRefreshTime = 0; // 从0开始计数,每50分钟(3000秒)刷新一次
+        m_alwaysOnRefreshTime = 0;
         
         // 确保时间显示定时器正在运行(用于定期检查)
         if (m_timeDisplayTimer == nullptr) {