iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0

Intent又稱意圖,它是一個將要執行的動作抽象描述,由Intent來協助完成各組間之間的通訊。

常見的應用場景有:

  • 啟動Activity
  • 啟動Service
  • 傳遞Broadcast
  • 呼叫系統App(相機、電話、瀏覽器等)
  • 呼叫第三方App

Intent調用傳導過程


上圖是Activity跳轉到另一個Activity的intent傳導過程

  1. Activity A調用startActivity()是希望有另一個Activity來協助接手。
  2. Android系統根據Intent需求來匹配最適當的Activity。
  3. 系統找到Activity B就會調用該Activity的onCreat()並傳遞Activity A發起的Intent內容。

"行為"上Intent可以分為兩種獨立型回調型

  • 獨立型:表示Intent的傳遞是單向的。
  • 回調型:表示Intent的傳遞是有來回的。

"調用"上Intent可以分為兩種顯式指定隱式指定

  • 顯式指定:指的是Intent發生時 "明確指定" 要由哪一個組件來接手服務(Activity、Service、Broadcast等)。
  • 隱式指定:指的是Intent發生時 "不指明" 由哪一個組件來接手服務,而是讓可以接手的組件都有機會為其服務。

Intent的構成

Action

用來表示intent的行為。
Intent(String action) 使用給定的Action創建Intent
Intent(String action, Uri uri) 使用給定的Action和Uri數據創建Intent。
公共方法
setAction(String action) 設置要執行的操作

Data

表示與action要操縱的數據。
setData(Uri data) 設置此Intent正在操作的數據

Category

用來表示action的類別。
addCategory(String category) 向Intent添加一個新類別。

Type

對於data範例的描述。
setType(String type) 設置顯示MIME數據類

Component

目的組件
setComponent(ComponentName component)

Extras

擴展信息
putExtra(String name, T value) 向Intent添加字段型擴展數據。

Flags

期望這個Intent的運行模式


上一篇
Day02 - Activity 生命週期
下一篇
Day04 - ViewBinding
系列文
Android 開發 30天 初學之路筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言