iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會利用目前 Visual Studio 內建的專案樣本建立一個初始的 .NET MAUI 專案,並且透過此 .NET MAUI 專案來把 TopStore App 的開發從 Xamairn.Forms 轉換到 .NET MAUI 上進行。

本篇是 Re: 從零改成用 .NET MAUI 技術來繼續過去用 Xamarin 開發的一個 App : TopStore 系列 系列文的 EP10。


一開始,先來調整一下過去在 Xamarin.Forms 版本時所撰寫的 Shell 運用,將 ShellContent 要對應呈現畫面,直接透過 ContentPage 的寫法改成透過 ShellContent 的 ContentTemplate 來設定該呈現畫面。

在 .NET MAUI 版本的 TopStoreApp 專案開啟 AppShell.xaml:
01

注意到之前在 Shell 中的設計都是透過 ShellContent 去直接撰寫 ContentPage 來進行頁面的載入:
02-1

但近期按照微軟的釋出的官方文件(Xamarin.Forms / .NET MAUI) 指出,這樣的作法會使 App 在啟動時就得建立這些 ContentPage 的物件,而使得透過 AppShell 設計的 App 的啟動過程的效率不佳。

如果要根據 App 的導覽過程中所需的瀏覽畫面再產生該 ContentPage 的物件來呈現,可透過 ShllContent 當中的 ContentTemplate 來進行 DataTemplate 的調整:
02-2

由於在 .NET MAUI 可以直接執行 Windows 平台的偵錯執行,而 Visual Studio 就有直接的偵錯診斷工具可用,就在這邊做個比較的參考:

  • 原本 ContentPage 的寫法:
    03-by-ContentPage

  • 改用 DataTemplate 的寫法:
    03-by-DataTemplate

在 Android 的部分若在 Xamarin.Forms 的版本,是可以透過 Xamarin.Profiler 來檢測。這邊透過 "Xamarin Profiler" 進行檢測,大約在應用程式啟動後 15 秒左右進行 Profiling (快照擷取):
04-XamarinProfiler

查看統計資料的 "配置記憶體" 與 "配置物件數" 的數值。

  • 原本 ContentPage 的寫法:
    05-by-ContentPage

  • 改用 DataTemplate 的寫法:
    05-by-DataTemplate

可惜的是目前透過 Xamarin Profiler 暫時無法分析拿來 .NET MAUI 應用程式執行的效果,所以下面改成用 Android Studio Profiler 來檢測分析。

這邊擷取在應用程式啟動後,針對兩種寫法的記憶體使用的最高值時來進行比較。

如果透過 Android Studio Profiler 來測量:
05-Android Studio Profiler

  • 原本 ContentPage 的寫法:
    05-by-ContentPage 1
    05-by-ContentPage 2

  • 改用 DataTemplate 的寫法:
    05-by-DataTemplate 1
    05-by-DataTemplate 2

無論是 Xamarin.Forms 還是 .NET MAUI 的版本,大致上確實也都是在 Shell 當中採用 DataTemplate 的寫法,會在啟動 App 時有執行效能上的好的效果。

BTW,上述的檢測方式都是在 Debug 偵錯模式進行,檢測程式撰寫方式的方面是否有效能的問題可以改善或比較。當在真正進行 Release 版本時,會再進一步的進行設定調整,以便最佳化 App 執行效能。

本 EP 介紹所完成的範例程式碼可在此下載



上一篇
EP09: Talk about some designs for .NET MAUI
下一篇
EP11: Analysis iOS by Xamarin Profiler Tool
系列文
Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言