系统:修复省电模式内存泄漏
authorCaisking <3449750381@qq.com>
Thu, 10 Oct 2024 11:03:41 +0000 (19:03 +0800)
committerCaisking <3449750381@qq.com>
Thu, 10 Oct 2024 11:03:41 +0000 (19:03 +0800)
code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatView.h
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatView.cpp
code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveEleView.cpp

index 668f09c..78270fb 100644 (file)
@@ -132,7 +132,6 @@ namespace OHOS
         Animator *CountdownBackAnimator_ = nullptr;\r
         UICanvasExt *canvas_ = nullptr;\r
         UILabelButton *restart_ = nullptr;\r
-        UIViewGroup *container_ = nullptr;\r
         UILabel *label_ = nullptr;\r
     };\r
 } // namespace OHOS\r
index f68b2e4..7cad670 100644 (file)
@@ -322,15 +322,90 @@ namespace OHOS
         g_pSaveBatView = this;\r
     }\r
 \r
-    SaveBatView::~SaveBatView()\r
-    {\r
-        /*关闭省电模式*/\r
-        uapi_exit_power_saving_mode();\r
 \r
-        UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);\r
-        UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);\r
+    SaveBatView::~SaveBatView()  \r
+    {  \r
+        /* 关闭省电模式 */  \r
+        uapi_exit_power_saving_mode();\r
 \r
-        g_pSaveBatView = nullptr;\r
+        // UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);\r
+        // UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);\r
+\r
+        // 释放所有动态分配的成员变量  \r
+        if (timelabel) {  \r
+            delete timelabel;  \r
+            timelabel = nullptr;  \r
+        }  \r
+        if (datelabel) {  \r
+            delete datelabel;  \r
+            datelabel = nullptr;  \r
+        }  \r
+        if (batterylabel) {  \r
+            delete batterylabel;  \r
+            batterylabel = nullptr;  \r
+        }  \r
+        if (batteryprogress) {  \r
+            delete batteryprogress;  \r
+            batteryprogress = nullptr;  \r
+        }  \r
+        if (batteryiamge) {  \r
+            delete batteryiamge;  \r
+            batteryiamge = nullptr;  \r
+        }  \r
+        if (button_exit) {  \r
+            delete button_exit;  \r
+            button_exit = nullptr;  \r
+        }  \r
+\r
+        // 退出界面的成员变量  \r
+        if (curren_label) {  \r
+            delete curren_label;  \r
+            curren_label = nullptr;  \r
+        }  \r
+        if (countlabel) {  \r
+            delete countlabel;  \r
+            countlabel = nullptr;  \r
+        }  \r
+        if (wathchiamge) {  \r
+            delete wathchiamge;  \r
+            wathchiamge = nullptr;  \r
+        }  \r
+        if (backprogress) {  \r
+            delete backprogress;  \r
+            backprogress = nullptr;  \r
+        }  \r
+\r
+        // 测试相关的成员变量  \r
+        if (CountdownBackAnimator_) {\r
+            CountdownBackAnimator_->Stop();\r
+        }\r
+        if (callBack_) {  \r
+            delete callBack_;  \r
+            callBack_ = nullptr;\r
+        }\r
+        \r
+        delete CountdownBackAnimator_;\r
+        CountdownBackAnimator_ = nullptr;\r
+        \r
+        if (canvas_) {  \r
+            delete canvas_;  \r
+            canvas_ = nullptr;  \r
+        }  \r
+        if (restart_) {  \r
+            delete restart_;  \r
+            restart_ = nullptr;  \r
+        }  \r
+        if (container_) {  \r
+            delete container_;  \r
+            container_ = nullptr;  \r
+        }  \r
+        if (label_) {  \r
+            delete label_;  \r
+            label_ = nullptr;  \r
+        }  \r
+\r
+        // 将全局指针设为 nullptr  \r
+        g_pSaveBatView = nullptr;  \r
     }\r
 \r
     SaveBatView *SaveBatView::GetInstance()\r
index 24a8a2c..39d532d 100644 (file)
@@ -30,8 +30,35 @@ static constexpr char *butokImgPath = "/user/res/Save_Ele/Save_Right.bin";
 SaveEleView::SaveEleView() { g_pSaveEleView = this; }\r
 \r
 SaveEleView::~SaveEleView() {\r
-  UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);\r
-  UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);\r
+\r
+  // UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);\r
+  // UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);\r
+\r
+  if (labeltitle) {\r
+    delete labeltitle;\r
+    labeltitle = nullptr;\r
+  }\r
+  if (labelnote) {\r
+    delete labelnote;\r
+    labelnote = nullptr;\r
+  }\r
+  if (labelkown) {\r
+    delete labelkown;\r
+    labelkown = nullptr;\r
+  }\r
+  if (iamgeicon) {\r
+    delete iamgeicon;\r
+    iamgeicon = nullptr;\r
+  }\r
+  if (buttonno) {\r
+    delete buttonno;\r
+    buttonno = nullptr;\r
+  }\r
+  if (buttonok) {\r
+    delete buttonok;\r
+    buttonok = nullptr;\r
+  }\r
+\r
   g_pSaveEleView = nullptr;\r
 }\r
 \r
@@ -46,7 +73,7 @@ void SaveEleView::InitView() {
 \r
   /*初始化label*/\r
   InitRollLabel(labeltitle, 83, 50, 300, 35, "labletitle", STR_POWER_SAVE_MODE,\r
-               DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+                DEFAULT_VECTOR_FONT_FILENAME, 30);\r
   InitLabelExt(labelnote, 53, 217, 360, 200, "labletitle", STR_SAVENOTE,\r
                DEFAULT_VECTOR_FONT_FILENAME, 30);\r
   InitLabelExt(labelkown, 53, 385, 360, 100, "labelrecord", STR_SAVEBACK,\r