Xamarin.Android 應用程序剖析
以下屏幕截圖列出了解決方案的內容。 下面是一個解決方案資源管理器,它包含與解決方案關聯的目錄結構和所有文件:
創建了一個名為 App3的解決方案,並在其中放入了 Android 項目 App3。查看項目中的項,查看每個文件夾及其用途:
屬性(properties)
- AndroidManifest.xml:該文件描述了對Xamarin.Android應用程序的所有要求(包括名稱、版本號呵權限)
- Properties文件還包括.NET程序集元數據文件AssemblyInfo.cs。最好在此文件中填寫一些應用程序相關的基本信息。
- 引用
- 【引用】包含生成和運行應用程序所需的程序集。展開【引用】目錄,可查看對.NET程序集(如System、System.Core和System.Xml)的引用以及對Xamarin的Mono.Android的程序集的引用。
- 資產
- 【資產】包含應用程序需要運行的文件(包括字體、本地數據文件和文本文件)。此處包括的文件可通過生成的Assets類訪問。有關Android資產的詳細信息,請參閱 Xamarin 使用 Android 資產指南。https://docs.microsoft.com/zh-cn/xamarin/android/get-started/hello-android/hello-android-deepdive?pivots=windows
- 資源
【資源】包含應用程序資源,例如字符串、圖像和布局。可通過生成的resource類訪問代碼中的這些資源。 Android 資源指南提供有關“資源” 目錄的更多詳細信息。 應用程序模板在 AboutResources.txt 文件中還包含有“資源”的簡明指南。
【資源】目錄包含4個文件夾(drawable、layout、mipmap和values),還有一個名為Resource.designer.cs的文件。
下面總結了這些項:
- 【drawable】目錄包含可繪制資源,如圖像和位圖。
- 【mipmap】目錄包含適用於不同啟動器圖標密度的可繪制文件。在默認模板中,【drawable】目錄包含應用程序圖標文件‘Icon.png’。
- 【layout】目錄包含Android設計器文件(.axml)該文件定義每個屏幕或活動的用戶界面。改模板創建名為activity_main.axml 的默認布局 。
- 【values】此目錄包含存儲簡單值(如字符串、整數和顏色)的 XML 文件。 該模板創建名為 Strings.xml 的文件,用於存儲字符串值。
- 【Resource.designer.cs】也稱為
Resource類,此文件是一個分部類,存放分配給每個資源的唯一 ID。 它由 Xamarin.Android 工具自動創建,並在必要時重新生成。 不應手動編輯此文件,因為 Xamarin.Android 將覆蓋對其進行的任何手動更改。 -
Activity 類
Phoneword 應用程序只有一個屏幕(活動)。 為屏幕提供支持的類稱為 MainActivity,位於 MainActivity.cs 文件中。 名稱 MainActivity 在 Android 中沒有特別的意義 – 雖然約定是命名應用程序 MainActivity 中的第一個活動,但 Android 並不在意將其命名為其他名稱。
打開 MainActivity.cs 時,可以看到,MainActivity 類是 Activity 類的子類 並且活動標有 Activity 屬性:
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)] public class MainActivity : AppCompatActivity { ... }
Activity 屬性向 Android 清單注冊活動;這能讓 Android 知道此類是該清單所管理的 Phoneword 應用程序的一部分。 Label 屬性設置將顯示在屏幕頂部的文本。
MainLauncher 屬性告知 Android 在啟動應用程序時顯示此活動。 如了解 Android 多屏幕指南中所述,當你向應用程序添加更多活動(屏幕)時,此屬性會變得很重要。
在了解了 MainActivity 的基礎知識,現在將通過介紹_活動生命周期_來深入研究活動代碼。
-
活動生命周期
在 Android 中,活動會根據與用戶的交互經歷生命周期的不同階段。 可以對活動進行創建、啟動和暫停、恢復和銷毀等操作。
Activity 類包含方法,系統會在屏幕生命周期的特定時間點調用這些方法。
通過重寫
Activity 生命周期方法,可以控制活動的加載方式和與用戶的互動方式,甚至還可以控制活動從設備屏幕消失后會發生的情況。 例如,可以重寫上圖中的生命周期方法,以執行以下重要任務:
- OnCreate – 創建視圖、初始化變量,並執行在用戶能看到活動之前必須完成的其他准備工作。 只有將活動加載到內存時,才會調用此方法一次。
- OnResume – 執行每當活動返回到設備屏幕時必須發生的任何任務。
- OnPause – 執行每當活動離開設備屏幕時必須發生的任何任務。
