系统:优化主界面内存泄漏
authorCaisking <3449750381@qq.com>
Thu, 10 Oct 2024 10:43:43 +0000 (18:43 +0800)
committerCaisking <3449750381@qq.com>
Thu, 10 Oct 2024 10:43:43 +0000 (18:43 +0800)
code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelPower.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelPowerStandby.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialVideoView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp

index 469ae4f..9ad7c3d 100644 (file)
@@ -220,12 +220,15 @@ namespace OHOS
         View<MainPresenterSample>::OnStart();
         BaseView::RootView(Color::Black().full);
 
-        mainSwipeGroup = new UICrossView();
-        if (mainSwipeGroup == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainSwipeGroup new fail");
-            return;
+        if (mainSwipeGroup == nullptr) {
+            mainSwipeGroup = new UICrossView();
+            if (mainSwipeGroup == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainSwipeGroup new fail");
+                return;
+            }
         }
+
         UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(MainPresenterSample::GetInstance());
         if (listener == nullptr)
         {
@@ -356,23 +359,28 @@ namespace OHOS
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::VerticalViewInit");
 #ifdef FD230
-        dropDownView = new PullUpDownView();
-        if (dropDownView == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownView new fail");
-            return;
-        }
+        if (dropDownView == nullptr) {
+            dropDownView = new PullUpDownView();
+            if (dropDownView == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownView new fail");
+                return;
+            }
+          }
         dropDownView->PreLoad();
         dropDownView->SetViewId("dropDownView");
         dropDownView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
         dropDownView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
         /* -------------------------------------------------------------------------- */
-        messageView = new MessageControlView();
-        if (messageView == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageView new fail");
-            return;
+        if (messageView == nullptr) {
+            messageView = new MessageControlView();
+            if (messageView == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageView new fail");
+                return;
+            }
         }
+
         messageView->SetViewId("messageView");
         messageView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
         messageView->PreLoad();
index cb0035a..dc8f4f8 100644 (file)
@@ -59,9 +59,10 @@ namespace OHOS
         NotifyPowerUpdate();
     }
 
-    void DialModelPower::NotifyPowerUpdate()
-    {
-        onChangeListener_ = new OnDialDataUpdateListener();
+    void DialModelPower::NotifyPowerUpdate() {
+      if (onChangeListener_ == nullptr) {
+            onChangeListener_ = new OnDialDataUpdateListener(); 
+        }
         if (onChangeListener_ != nullptr)
         {
             onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_POWER, power_);
index 5051cae..6fdcfe2 100644 (file)
@@ -70,9 +70,10 @@ namespace OHOS
         NotifyPowerStanbyUpdate();
     }
 
-    void DialModelPowerStanby::NotifyPowerStanbyUpdate()
-    {
-        onChangeListener_ = new OnDialDataUpdateListener();
+    void DialModelPowerStanby::NotifyPowerStanbyUpdate() {
+      if (onChangeListener_ == nullptr) {
+            onChangeListener_ = new OnDialDataUpdateListener();
+        }
         if (onChangeListener_ != nullptr)
         {
             onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_POWER_STANDBY, PowerStanby_);
index f8182fd..9472f94 100644 (file)
@@ -23,7 +23,8 @@ DialVideoView::DialVideoView()
 DialVideoView::~DialVideoView()
 {
     if (videoPlayer_ != nullptr) {
-        delete videoPlayer_;
+      delete videoPlayer_;
+      videoPlayer_ = nullptr;
     }
 }
 
index 363057b..51ddcce 100644 (file)
@@ -41,7 +41,7 @@ namespace OHOS
 
     void MessageCardView::ClearAll(void)
     {
-        RemoveAll();
+         RemoveAll();
         if (imageline != nullptr)
         {
             delete imageline;
@@ -49,7 +49,6 @@ namespace OHOS
         }
         if (MessageList != nullptr)
         {
-            MessageList->RemoveAll();
             delete MessageList;
             MessageList = nullptr;
         }
index dbca24a..1da885c 100644 (file)
 
 #include "message/include/MessageControlView.h"
-#include "message/include/MessageModel.h"
 #include "message/include/MessageControlPresenter.h"
+#include "message/include/MessageModel.h"
 #include "wearable_log.h"
 
-namespace OHOS
-{
-    static MessageControlView *g_pMessageControlView{nullptr};
-    MessageControlView::MessageControlView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageControlView::MessageControlView()");
-        SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-        g_pMessageControlView = this;
-    }
-
-    MessageControlView::~MessageControlView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageControlView::~MessageControlView()");
-        if (viewiInitStatus)
-        {
-            ClearAll();
-        }
-        g_pMessageControlView = nullptr;
-    }
-
-    MessageControlView *MessageControlView::GetInstance()
-    {
-        return g_pMessageControlView;
-    }
+namespace OHOS {
+static MessageControlView *g_pMessageControlView{nullptr};
+MessageControlView::MessageControlView() {
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                "MessageControlView::MessageControlView()");
+  SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+  g_pMessageControlView = this;
+}
 
-    void MessageControlView::ClearAll(void)
-    {
-        RemoveAll();
-        if (messageLackView != nullptr)
-        {
-            messageLackView->RemoveAll();
-            delete messageLackView;
-            messageLackView = nullptr;
-        }
-        if (messageCardView != nullptr)
-        {
-            messageCardView->RemoveAll();
-            delete messageCardView;
-            messageCardView = nullptr;
-        }
-    }
+MessageControlView::~MessageControlView() {
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                "MessageControlView::~MessageControlView()");
+  if (viewiInitStatus) {
+    ClearAll();
+  }
+  g_pMessageControlView = nullptr;
+}
 
-    bool MessageControlView::InitView(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageControlView InitView");
-        messageLackView = new MessageLackView();
-        if (messageLackView == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageLackView::new messageLackView fail");
-            return false;
-        }
-        if (messageLackView->CreateUIViewGroup() == false)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateUIViewGroup fail");
-            return false;
-        }
+MessageControlView *MessageControlView::GetInstance() {
+  return g_pMessageControlView;
+}
 
-        messageCardView = new MessageCardView();
-        if (messageCardView == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageCardView::new messageCardView fail");
-            return false;
-        }
-        if (messageCardView->InitPage() == false)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitPage fail");
-            return false;
-        }
-        Add(messageCardView);
-        Add(messageLackView);
+void MessageControlView::ClearAll(void) {
+  RemoveAll();
+  if (messageLackView != nullptr) {
+    messageLackView->RemoveAll();
+    delete messageLackView;
+    messageLackView = nullptr;
+  }
+  if (messageCardView != nullptr) {
+    messageCardView->RemoveAll();
+    delete messageCardView;
+    messageCardView = nullptr;
+  }
+}
 
-        isLack = MessageModel::GetInstance().HasDataVector();
-        if (!isLack)
-        {
-            messageCardView->SetVisible(false);
-            messageLackView->SetVisible(true);
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageLackView true");
-        }
-        else
-        {
-            messageCardView->SetVisible(true);
-            messageCardView->SetUpView(messageCardView);
-            messageCardView->GetList()->RefreshList();
-            messageLackView->SetVisible(false);
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageCardView true");
-        }
-        return true;
+bool MessageControlView::InitView(void) {
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageControlView InitView");
+  if (messageLackView == nullptr) {
+    messageLackView = new MessageLackView();
+    if (messageLackView == nullptr) {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                    "MessageLackView::new messageLackView fail");
+      return false;
+    }
+  }
+  if (messageLackView->CreateUIViewGroup() == false) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateUIViewGroup fail");
+    return false;
+  }
+  if (messageCardView == nullptr) {
+    messageCardView = new MessageCardView();
+    if (messageCardView == nullptr) {
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                    "MessageCardView::new messageCardView fail");
+      return false;
     }
+  }
+  if (messageCardView->InitPage() == false) {
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitPage fail");
+    return false;
+  }
+  
+  Add(messageCardView);
+  Add(messageLackView);
 
-    void MessageControlView::SetLackView(bool flag)
-    {
-        // 避免相同设置多次赋值
-        if (flag == isLack)
-            return;
+  isLack = MessageModel::GetInstance().HasDataVector();
+  if (!isLack) {
+    messageCardView->SetVisible(false);
+    messageLackView->SetVisible(true);
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageLackView true");
+  } else {
+    messageCardView->SetVisible(true);
+    messageCardView->SetUpView(messageCardView);
+    messageCardView->GetList()->RefreshList();
+    messageLackView->SetVisible(false);
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageCardView true");
+  }
+  return true;
+}
 
-        isLack = flag;
+void MessageControlView::SetLackView(bool flag) {
+  // 避免相同设置多次赋值
+  if (flag == isLack)
+    return;
 
-        if (isLack)
-        {
-            messageLackView->SetVisible(true);
-            messageCardView->SetVisible(false);
-        }
-        else
-        {
-            messageLackView->SetVisible(false);
-            messageCardView->SetVisible(true);
-        }
-    }
+  isLack = flag;
 
-    void MessageControlView::PreLoad(void)
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageControlView::PreLoad");
-        if (!viewiInitStatus)
-        {
-            InitView();
-            viewiInitStatus = true;
-        }
-    }
+  if (isLack) {
+    messageLackView->SetVisible(true);
+    messageCardView->SetVisible(false);
+  } else {
+    messageLackView->SetVisible(false);
+    messageCardView->SetVisible(true);
+  }
+}
 
-    void MessageControlView::UnLoad(void)
-    {
-        // Message's usage scenes is complicated, so we do not release it's resources inner slice.
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageControlView::UnLoad");
-    }
+void MessageControlView::PreLoad(void) {
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageControlView::PreLoad");
+  if (!viewiInitStatus) {
+    InitView();
+    viewiInitStatus = true;
+  }
+}
+
+void MessageControlView::UnLoad(void) {
+  // Message's usage scenes is complicated, so we do not release it's resources
+  // inner slice.
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageControlView::UnLoad");
 }
+} // namespace OHOS