前言
Activity
屬於Android
的四大組件之一- 本文將全面解析
Activity
,獻上1份Activity
的學習攻略,包括其生命週期、啓動模式、啓動方式等等,希望你們會喜歡。
目錄
1. 定義
即 活動,屬於 展示型組件
屬於
Android
四大組件之一:Activity
、Service
、BroadcastReceiver
、ContentProvider
2. 作用
顯示界面 & 與用戶進行交互
- 一個
Activity
通常是一個界面,是四大組件唯一能被用戶感知的- 每個活動被實現爲一個獨立的類, & 從活動基類繼承過來
Activity
之間通過Intent
進行通信
3. 生命週期
- 具體如下圖
更加詳細請看文章:Android基礎:3分鐘詳解Activity生命週期
4. 啓動模式
Activity
的啓動模式有4種,具體如下
- 4種啓動模式的區別
更加詳細請看文章:Android基礎:最易懂的Activity啓動模式詳解
5. 啓動方式
- 啓動
Activity
的方式主要是:顯式Intent
& 隱式Intent
- 具體介紹如下:
5.1 顯式Intent(3種)
// 1. 使用構造函數 傳入 Class對象
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
// 2. 使用 setClassName()傳入 包名+類名 / 包Context+類名
Intent intent = new Intent();
// 方式1:包名+類名
// 參數1 = 包名稱
// 參數2 = 要啓動的類的全限定名稱
intent.setClassName("com.hc.hctest", "com.hc.hctest.SecondActivity");
// 方式2:包Context+類名
// 參數1 = 包Context,可直接傳入Activity
// 參數2 = 要啓動的類的全限定名稱
intent.setClassName(this, "com.hc.hctest.SecondActivity");
startActivity(intent);
// 3. 通過ComponentName()傳入 包名 & 類全名
Intent intent = new Intent();
// 參數1 = 包名稱
// 參數2 = 要啓動的類的全限定名稱
ComponentName cn = new ComponentName("com.hc.hctest", "com.hc.hctest.SecondActivity");
intent.setComponent(cn);
startActivity(intent);
5.2 隱式Intent
// 通過Category、Action設置
Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addCategory("com.hc.second");
intent.setAction("com.hc.action");
startActivity(intent);
5.3 匹配規則
更加詳細請看文章:Android:關於 Intent組件的那些小事(介紹、使用方法等)
6. 啓動過程
Activity
的啓動過程具體如下:
6.1 示意圖
6.2 具體描述
當請求啓動Activity
時:
Launcher
進程通過Binder
驅動向ActivityManagerService
類發起startActivity
請求;ActivityManagerService
類接收到請求後,向ActivityStack
類發送啓動Activity
的請求;ActivityStack
類記錄需啓動的Activity
的信息 & 調整Activity
棧 將其置於棧頂、通過Binder
驅動 將Activity
的啓動信息傳遞到ApplicationThread
線程中(即Binder
線程)ApplicationThread
線程通過Handler
將Activity
的啓動信息發送到主線程ActivityThread
- 主線程
ActivityThread
類接收到該信息 & 請求後,通過ClassLoader
機制加載相應的Activity
類,最終調用Activity
的onCreate()
,最後 啓動完畢
7. 卡頓原因
Activity
的卡頓原因主要歸結如下:
關於內存泄漏 & 性能優化,請看系列文章:
Android性能優化:這是一份全面&詳細的內存優化指南
Android性能優化:手把手帶你全面瞭解 內存泄露 & 解決方案
Android性能優化:那些關於Bitmap圖片資源優化的小事
Android性能優化:手把手帶你全面瞭解 繪製優化
Android性能優化:佈局優化 詳細解析(含、、講解 )
8. 加速啓動方式
加速啓動Activity
的方式歸結如下:
9. 緩存方式(狀態保存)
- 問題描述
- 具體說明
10. Activity 與Fragment的交互方式
- 主要有:接口、Bundle、廣播
- 具體請看文章:Android:手把手教你 實現Activity 與 Fragment 相互通信(含Demo)
至此,關於Android
四大組件之一的Activity
講解完畢。
11. 總結
- 本文全面講解了
Activity
,現在大家對Activity
應該十分了解了 - 下一篇文章我將對講解
Android
的相關知識,感興趣的同學可以繼續關注本人運營的 CSDN博客