解决闹钟主界面内存泄漏问题
authorluozheng <1732036298@qq.com>
Thu, 3 Oct 2024 11:20:04 +0000 (19:20 +0800)
committerluozheng <1732036298@qq.com>
Thu, 3 Oct 2024 11:20:04 +0000 (19:20 +0800)
code/sdk/application/wearable/fd230app/nativeui/alarm/include/MainAlarmView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp

index f6ff00d..3cb3457 100644 (file)
@@ -93,6 +93,7 @@ private:
     bool reflashStatus{false};
     UILabelExt * TitleLabelExt_{nullptr}; 
     UILabelButtonExt * AddButton_{nullptr};
+    UICheckBox::OnChangeListener *statusListener{nullptr};
 
     #define ALARM_DELETE_IMAGE "/user/res/Alarm/alarm_delete.bin"
 };
index 519af3e..f94c0a0 100644 (file)
@@ -99,6 +99,16 @@ MainAlarmView::~MainAlarmView()
         delete newTimeView;
         newTimeView = nullptr;
     }
+    if(maxClockView)
+    {
+        delete maxClockView;
+        maxClockView = nullptr;
+    }
+    if(statusListener)
+    {
+        delete statusListener;
+        statusListener = nullptr;
+    }
     if(nullptr != TitleLabelExt_)
     {
         delete TitleLabelExt_;
@@ -312,11 +322,12 @@ UIViewGroup * MainAlarmView::NewClockCtlExt(int16_t alarmNum, uint8_t index)
         // statusButton[alarmNum]->SetStyle(STYLE_BACKGROUND_OPA, alarmNum);
         // statusButton[alarmNum]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff29b862);
         // statusButton[alarmNum]->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-        UICheckBox::OnChangeListener *statusListener{nullptr};
-        statusListener = new AlarmStatusBtnChangeListener(reinterpret_cast<UIView*>(statusButton[alarmNum]));
-        if (statusListener == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::NewStatusButton statusListener nullptr!");
-            return nullptr;
+        if(statusListener == nullptr){
+            statusListener = new AlarmStatusBtnChangeListener(reinterpret_cast<UIView*>(statusButton[alarmNum]));
+            if (statusListener == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::NewStatusButton statusListener nullptr!");
+                return nullptr;
+            }
         }
         statusButton[alarmNum]->SetOnChangeListener((UICheckBox::OnChangeListener *)statusListener);
         /* ----------------------------------- Add ---------------------------------- */