if (g_screen60s_timer != nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
"HeartModel::heart_stop_screen60s_timer");\r
- osTimerStop(g_screen60s_timer);\r
- // 删除定时器并置为 nullptr\r
- osStatus_t ret = osTimerDelete(g_screen60s_timer);\r
+ // 先停止定时器,避免在回调执行时删除\r
+ osStatus_t ret = osTimerStop(g_screen60s_timer);\r
+ if (ret != osOK) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "osTimerStop failed, ret = %lx!!", ret);\r
+ // 如果停止失败,仍然尝试删除,但记录错误\r
+ }\r
+ // 保存定时器指针,避免在删除过程中被其他线程修改\r
+ osTimerId_t timer_to_delete = g_screen60s_timer;\r
+ g_screen60s_timer = nullptr; // 先置为nullptr,防止重复删除\r
+ // 删除定时器\r
+ ret = osTimerDelete(timer_to_delete);\r
if (ret != osOK) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
"osTimerDelete failed, ret = %lx!!", ret);\r
}\r
- g_screen60s_timer = nullptr;\r
SCREEN_60S_TIME = 60;\r
}\r
}\r