Android 四大組件:這是一份全面 & 詳細的Activity學習指南

前言

  • Activity屬於 Android的四大組件之一
  • 本文將全面解析 Activity ,獻上1份 Activity的學習攻略,包括其生命週期、啓動模式、啓動方式等等,希望你們會喜歡。

目錄

示意圖


1. 定義

即 活動,屬於 展示型組件

屬於Android四大組件之一:ActivityServiceBroadcastReceiverContentProvider


2. 作用

顯示界面 & 與用戶進行交互

  1. 一個Activity通常是一個界面,是四大組件唯一能被用戶感知的
  2. 每個活動被實現爲一個獨立的類, & 從活動基類繼承過來
  3. 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時:

  1. Launcher進程通過Binder驅動向ActivityManagerService類發起startActivity請求;
  2. ActivityManagerService類接收到請求後,向ActivityStack類發送啓動Activity的請求;
  3. ActivityStack類記錄需啓動的Activity的信息 & 調整Activity棧 將其置於棧頂、通過 Binder 驅動 將 Activity 的啓動信息傳遞到ApplicationThread線程中(即Binder線程)
  4. ApplicationThread線程通過HandlerActivity的啓動信息發送到主線程ActivityThread
  5. 主線程ActivityThread類接收到該信息 & 請求後,通過ClassLoader機制加載相應的Activity類,最終調用ActivityonCreate(),最後 啓動完畢

7. 卡頓原因

Activity的卡頓原因主要歸結如下:

示意圖

關於內存泄漏 & 性能優化,請看系列文章:
Android性能優化:這是一份全面&詳細的內存優化指南
Android性能優化:手把手帶你全面瞭解 內存泄露 & 解決方案
Android性能優化:那些關於Bitmap圖片資源優化的小事
Android性能優化:手把手帶你全面瞭解 繪製優化
Android性能優化:佈局優化 詳細解析(含、、講解 )


8. 加速啓動方式

加速啓動Activity的方式歸結如下:

示意圖


9. 緩存方式(狀態保存)

  • 問題描述

示意圖

  • 具體說明

示意圖


10. Activity 與Fragment的交互方式

至此,關於Android四大組件之一的Activity講解完畢。


11. 總結

  • 本文全面講解了 Activity,現在大家對 Activity應該十分了解了
  • 下一篇文章我將對講解Android 的相關知識,感興趣的同學可以繼續關注本人運營的 CSDN博客

請幫頂 / 評論點贊!因爲你的鼓勵是我寫作的最大動力!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章