Activity
最近更新時間 | 穩定版 | 候選版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024 年 11 月 13 日 | 1.9.3 | - | 1.10.0-beta01 | - |
宣告依附元件
如要新增 Activity 的依附元件,必須將 Google Maven 存放區新增至您的專案。詳情請參閱「Google 的 Maven 存放區」一節。
在應用程式或模組的 build.gradle
檔案中,新增所需構件的依附元件:
Groovy
dependencies { def activity_version = "1.9.3" // Java language implementation implementation "androidx.activity:activity:$activity_version" // Kotlin implementation "androidx.activity:activity-ktx:$activity_version" }
Kotlin
dependencies { val activity_version = "1.9.3" // Java language implementation implementation("androidx.activity:activity:$activity_version") // Kotlin implementation("androidx.activity:activity-ktx:$activity_version") }
如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。
意見回饋
您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。
詳情請參閱 Issue Tracker 說明文件。
1.10 版
1.10.0-beta01 版
2024 年 11 月 13 日
發布 androidx.activity:activity:1.10.0-beta01
、androidx.activity:activity-compose:1.10.0-beta01
和 androidx.activity:activity-ktx:1.10.0-beta01
,且自上次 Alpha 版以來皆無異動。1.10.0-beta01 版包含這些修訂項目。
1.10.0-alpha03 版
2024 年 10 月 30 日
發布 androidx.activity:activity:1.10.0-alpha03
、androidx.activity:activity-compose:1.10.0-alpha03
和 androidx.activity:activity-ktx:1.10.0-alpha03
。1.10.0-alpha03 版本包含這些修訂版本。
API 變更
- 新增
LocalActivity
本機組合,為目前範圍提供Activity
,讓開發人員不必從LocalContext
取得Activity
。它也提供新的 Lint 規則,可檢查LocalContext
何時會錯誤轉換為Activity
。(I7746a、b/283009666)。
修正錯誤
- 自 Activity
1.9.3
起:在處理常式停用後,PredictiveBackHandler
就不會再觸發回呼。這將修正 Navigation Compose 的NavHost
會擲回IndexOutOfBoundsException
的問題。(I3f75e、b/365027664、b/340202286)。
依附元件更新
- Activity Compose 現在依附於 Compose Runtime 1.7.0 (I7746a、b/283009666)
1.10.0-alpha02 版
2024 年 9 月 4 日
發布 androidx.activity:activity:1.10.0-alpha02
、androidx.activity:activity-compose:1.10.0-alpha02
和 androidx.activity:activity-ktx:1.10.0-alpha02
。1.10.0-alpha02 版包含這些修訂項目。
行為變更
- 如果系統相片挑選工具無法使用,觸發相片挑選工具的
PickVisualMedia
和PickMultipleVisualMedia
Activity Result 合約不再直接委派給 Google Play 服務,而是使用公開的ACTION_SYSTEM_FALLBACK_PICK_IMAGES
動作和相關額外項目,為 OEM 和系統應用程式提供一致的相片挑選工具體驗,做為備用方案。這項異動對搭載最新版 Google Play 服務的裝置使用者體驗應不會造成影響。(I3513d)
修正錯誤
- 移除新平台 API 存取權的手動設定,因為在使用 AGP 7.3 以上版本 (例如 R8 3.3 版) 的 R8 時,以及在使用 AGP 8.1 以上版本 (例如 D8 8.1 版) 的所有版本時,系統會透過 API 模擬功能自動執行此操作。建議未使用 AGP 的用戶端更新至 D8 8.1 以上版本。詳情請參閱這篇文章。(I9496c、b/345472586)。
- 自 Activity
1.9.2
起修正以下問題:Activity ComposePredictiveBackHandler
API 會繼續在已停用的影格上處理系統返回手勢,這可能導致 Navigation Compose 等程式庫在空白返回堆疊中處理返回動作,進而擲回IndexOutOfBoundsException
。(Ie3301、b/340202286) - 從 Activity
1.9.1
:修正PredictiveBackHandler
的問題,在執行系統返回後,嘗試從OnBackPressedDispatcher
執行onBackPressed
會失敗。(I5f1f8)。
1.10.0-alpha01 版
2024 年 6 月 26 日
發布 androidx.activity:activity:1.10.0-alpha01
、androidx.activity:activity-compose:1.10.0-alpha01
和 androidx.activity:activity-ktx:1.10.0-alpha01
。這個版本是在內部分支版本中開發而成。
新功能
- 新增支援 Android V 中推出的新
PhotoPicker
功能,包括能夠依序挑選圖片,以及選擇初始顯示的相簿或圖片分頁。
1.9 版
1.9.3 版
2024 年 10 月 16 日
發布 androidx.activity:activity:1.9.3
、androidx.activity:activity-compose:1.9.3
和 androidx.activity:activity-ktx:1.9.3
。1.9.3 版包含這些修訂項目。
修正錯誤
- 停用處理常式後,
PredictiveBackHandler
就不會再觸發回呼。這將修正 Navigation Compose 的NavHost
會擲回IndexOutOfBoundsException
的問題。(I3f75e、b/340202286)
1.9.2 版
2024 年 9 月 4 日
發布 androidx.activity:activity:1.9.2
、androidx.activity:activity-compose:1.9.2
和 androidx.activity:activity-ktx:1.9.2
。1.9.2 版包含這些 lthco 修訂項目。
修正錯誤
- 修正問題:Activity Compose
PredictiveBackHandler
API 會繼續在已停用的影格上處理系統返回手勢,這可能導致 Navigation Compose 等程式庫在空白返回堆疊中處理返回動作,進而擲回IndexOutOfBoundsException
。(Ie3301、b/340202286)
1.9.1 版
2024 年 7 月 24 日
發布 androidx.activity:activity:1.9.1
、androidx.activity:activity-compose:1.9.1
和 androidx.activity:activity-ktx:1.9.1
。1.9.1 版包含這些修訂項目。
修正錯誤
- 修正
PredictiveBackHandler
的問題,在執行系統返回後,嘗試從OnBackPressedDispatcher
執行onBackPressed
會失敗。(I5f1f8)。
1.9.0 版
2024 年 4 月 17 日
發布 androidx.activity:activity:1.9.0
、androidx.activity:activity-compose:1.9.0
和 androidx.activity:activity-ktx:1.9.0
。1.9.0 版包含這些修訂版本。
自 1.8.0 版以來的重要變更
ComponentActivity
現在會實作OnUserLeaveHintProvider
,讓元件可回呼onUserLeaveHint
事件。OnBackPressedCallback
、BackHandler
和PredictiveBackHandler
API 現在會在處理返回時呼叫onBackPressedDispatcher.onBackPressed()
時發出警告,因為這會一律中斷預測返回動畫。詳情請參閱最佳做法指南。- 其餘的 Activity API 已使用 Kotlin 重新編寫,先前在
activity-ktx
中提供的所有擴充功能也已移至activity
。activity-ktx
目前完全空白。ActivityResultLauncher
轉換為 Kotlin 的過程中,getContract
方法現在是抽象 Kotlin 屬性。這項變更與二進位檔相容,但如果ActivityResultLauncher
的實作項目是使用 Kotlin 編寫,則會破壞原始碼。
1.9.0-rc01 版本
2024 年 4 月 3 日
發布 androidx.activity:activity:1.9.0-rc01
、androidx.activity:activity-compose:1.9.0-rc01
和 androidx.activity:activity-ktx:1.9.0-rc01
。1.9.0-rc01 版包含這些修訂項目。
依附元件更新
- Activity 現在依附於 Profile Installer 1.3.1。
1.9.0-beta01 版本
March 20, 2024
發布 androidx.activity:activity:1.9.0-beta01
、androidx.activity:activity-compose:1.9.0-beta01
和 androidx.activity:activity-ktx:1.9.0-beta01
。1.9.0-beta01 版包含這些修訂項目。
修正錯誤
- 修正了在 Activity
1.9.0-alpha02
中,因在建立 Activity 時呼叫OnBackPressedDispatcher
而導致的活動啟動效能迴歸問題。(Ie75e3)。
1.9.0-alpha03 版
2024 年 2 月 7 日
發布 androidx.activity:activity:1.9.0-alpha03
、androidx.activity:activity-compose:1.9.0-alpha03
和 androidx.activity:activity-ktx:1.9.0-alpha03
。1.9.0-alpha03 版包含以下修訂項目。
Lint 警告
OnBackPressedCallback
、BackHandler
和PredictiveBackHandler
API 現在會在處理返回時呼叫onBackPressedDispatcher.onBackPressed()
時發出警告,因為這會一律中斷預測返回動畫。詳情請參閱最佳做法指南。(1e4222、2c950d、b/287505200)。
修正錯誤
- 如果系統在預測返回手勢執行期間傳送返回事件,系統會取消目前執行的預測返回手勢,並以新返回事件取代,以便開始新的預測返回手勢。(I3482e)。
- 修正了從背景執行緒首次透過
ComponentActivity
存取onBackPressedDispatcher
時發生異常終止的問題。您現在可以在任何執行緒上安全地存取onBackPressedDispatcher
。(I79955)。
1.9.0-alpha02 版
2024 年 1 月 24 日
發布 androidx.activity:activity:1.9.0-alpha02
、androidx.activity:activity-compose:1.9.0-alpha02
和 androidx.activity:activity-ktx:1.9.0-alpha02
。1.9.0-alpha02 版包含以下修訂項目。
Kotlin 轉換
ActivityResultRegistry
已使用 Kotlin 重新編寫。這可確保傳遞至register
的契約中一般項目的是否可為空值,會正確傳遞至傳回給您的ActivityResultLauncher
。(I121f0)ActivityResult
已使用 Kotlin 重新編寫。支援將結構重組為resultCode
和data
欄位的ActivityResult
Kotlin 擴充功能已從activity-ktx
移至activity
。(I0565a)。ComponentActivity
和trackPipAnimationHintView
的by viewModels()
Kotlin 擴充功能已從activity-ktx
移至activity
。activity-ktx
構件現在完全空白。(I0a444)。
修正錯誤
enableEdgeToEdge
API 現在會在任何螢幕缺口周圍繪製圖形。(a3644b、b/311173461)- 自 Activity
1.8.2
起修正以下問題:修正傳遞至相片挑選器活動合約ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的額外項目,以便正確傳遞EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
鍵,而不是使用額外項目搭配"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
鍵。如果您是 OEM 廠商,並且實作系統備用相片挑選工具,強烈建議您支援這兩種額外功能,以確保最大的相容性。(I96a00)。
1.9.0-alpha01 版
2023 年 11 月 29 日
發布 androidx.activity:activity:1.9.0-alpha01
、androidx.activity:activity-compose:1.9.0-alpha01
和 androidx.activity:activity-ktx:1.9.0-alpha01
。1.9.0-alpha01 版包含以下修訂項目。
新功能
ComponentActivity
現在會實作OnUserLeaveHintProvider
,讓元件可回呼onUserLeaveHint
事件。(I54892)。
API 變更
ComponentActivity
已使用 Kotlin 重新編寫。(I14f31)。ActivityResultCaller
已使用 Kotlin 重新編寫。(Ib02e4)ActivityResultLauncher
已使用 Kotlin 重新編寫。在轉換過程中,getContract
方法現在是抽象的 Kotlin 屬性。這項變更與二進位檔相容,但如果ActivityResultLauncher
的實作項目是使用 Kotlin 編寫,則會破壞原始碼。(Id4615)PickVisualMediaRequest
的最低 API 級別現已與PickVisualMedia
Activity Result 合約相同,皆為 19。(Id6e21)
依附元件更新
- Activity 現在依附於 Core
1.13.0-alpha01
。(I14f31)。
1.8 版
1.8.2 版
2023 年 12 月 13 日
發布 androidx.activity:activity:1.8.2
、androidx.activity:activity-compose:1.8.2
和 androidx.activity:activity-ktx:1.8.2
。1.8.2 版包含以下修訂項目。
修正錯誤
- 修正傳遞至相片挑選工具活動合約
ACTION_SYSTEM_FALLBACK_PICK_IMAGES
的額外資料,以便正確傳遞EXTRA_SYSTEM_FALLBACK_PICK_IMAGES_MAX
鍵,而不是使用額外資料搭配"com.google.android.gms.provider.extra.PICK_IMAGES_MAX"
鍵。如果您是 OEM 廠商,並且實作系統備用相片挑選工具,強烈建議您支援這兩種額外功能,以確保最大的相容性。(I96a00)。
1.8.1 版
2023 年 11 月 15 日
發布 androidx.activity:activity:1.8.1
、androidx.activity:activity-compose:1.8.1
和 androidx.activity:activity-ktx:1.8.1
。1.8.1 版包含以下修訂項目。
修正錯誤
OnBackPressedDispatcher
現在會繼續將事件分派至正確的OnBackPressedCallback
,即使在處理返回手勢時新增了新的OnBackPressedCallback
也一樣。(Id0ff6)。
1.8.0 版
2023 年 10 月 4 日
發布 androidx.activity:activity:1.8.0
、androidx.activity:activity-compose:1.8.0
和 androidx.activity:activity-ktx:1.8.0
。1.8.0 版包含以下修訂項目。
自 1.7.0 版以來的重要變更
- 預測返回:
OnBackPressedCallback
現已提供新的預測返回回呼,用於處理返回手勢的啟動動作、整個手勢的進度,以及先前在執行返回手勢時,所用handleOnBackPressed()
回呼以外的取消返回手勢。這也包含PredictiveBackHandler
可組合項,可在 Activity Compose 中處理預測返回手勢事件。它會提供 BackEventCompat 物件的資料流,這些物件必須在您提供的暫停 lambda 中收集:
PredictiveBackHandler { progress: Flow<BackEventCompat> ->
// code for gesture back started
try {
progress.collect { backEvent ->
// code for progress
}
// code for completion
} catch (e: CancellationException) {
// code for cancellation
}
}
ComponentActivity.onBackPressed()
已淘汰,改用 API 處理返回。開發人員現在應使用 OnBackPressedDispatcher
,而非覆寫這個方法。
- EdgeToEdge - 新增
ComponentActivity.enableEdgeToEdge()
,可輕鬆以回溯相容的方式設定無邊框螢幕。
1.8.0-rc01 版
2023 年 9 月 20 日
發布 androidx.activity:activity:1.8.0-rc01
、androidx.activity:activity-compose:1.8.0-rc01
和 androidx.activity:activity-ktx:1.8.0-rc01
。1.8.0-rc01 版包含以下修訂項目。
1.8.0-beta01 版
2023 年 9 月 6 日
發布 androidx.activity:activity:1.8.0-beta01
、androidx.activity:activity-compose:1.8.0-beta01
和 androidx.activity:activity-ktx:1.8.0-beta01
。1.8.0-beta01 版包含以下修訂項目。
改善說明文件
- 改善
BackEventCompat
的說明文件。(aosp/2722254)
1.8.0-alpha07 版
2023 年 8 月 23 日
發布 androidx.activity:activity:1.8.0-alpha07
、androidx.activity:activity-compose:1.8.0-alpha07
和 androidx.activity:activity-ktx:1.8.0-alpha07
。1.8.0-alpha07 版包含以下修訂項目。
新功能
Activity Compose 新增了
PredictiveBackHandler
可組合項,用於處理預測返回手勢事件。它會提供BackEventCompat
物件的Flow
,這些物件必須在您提供的暫停 lambda 中收集:PredictiveBackHandler { progress: Flow<BackEventCompat> -> // code for gesture back started try { progress.collect { backEvent -> // code for progress } // code for completion } catch (e: CancellationException) { // code for cancellation } }
它還會透過 Lint 規則提供編譯時間警告,確保
Flow
呼叫collect()
。(Id2773、b/294884345)。ComponentActivity
中的onBackPressedDispatcher
現已延遲初始化,因此只會在需要時建立。(I0bf8e)
修正錯誤
- 當
ComponentActivity
取得onBackPressed()
回呼,且 Activity 已DESTROYED
時,就不會再在 Android 13 上顯示 NPE。(Idb055、b/291869278)。 - 移除了實驗性
isAtLeastU()
API 的用法 (Ie9117、b/289269026)
1.8.0-alpha06 版
2023 年 6 月 21 日
發布 androidx.activity:activity:1.8.0-alpha06
、androidx.activity:activity-compose:1.8.0-alpha06
和 androidx.activity:activity-ktx:1.8.0-alpha06
。1.8.0-alpha06 版包含以下修訂項目。
新功能
OnBackPressedDispatcher
現在會正確取消在預測返回手勢期間移除的任何回呼。(I3f90f)
API 變更
- 將
SystemBarStyle.auto
傳遞至enableEdgeToEdge
API 時,您現在可以覆寫detectDarkMode
lambda 參數,提供用於偵測夜間模式的自訂邏輯。(aosp/2546393、b/278263793)。
1.8.0-alpha05 版
2023 年 6 月 7 日
發布 androidx.activity:activity:1.8.0-alpha05
、androidx.activity:activity-compose:1.8.0-alpha05
和 androidx.activity:activity-ktx:1.8.0-alpha05
。這個版本是在內部分支版本中開發而成。
API 變更
- Activity 現已提供
BackEventCompat
類別,可做為BackEvent
的回溯相容版本,並與架構BackEvent
類別分離。 - 破壞性變更:
OnBackPressedCallback
的handleOnBackStarted
和handleOnBackProgressed
方法現在會接收androidx.activity.BackEventCompat
例項,而非架構android.window.BackEvent
類別。OnBackPressedDispatcher
上的對應@VisibleForTesting
API 也已更新。 OnBackPressedDispatcher
的建構函式現在會採用選用的Consumer<Boolean>
例項,讓調度器的擁有者在啟用回呼的數量從零變成非零或反之時,收到回呼。
修正錯誤
- 在 Activity
1.7.2
中:修正在呼叫report
前離開畫面時,ReportDrawn
發生當機的問題。(Ic46f1、b/260506820)。
1.8.0-alpha04 版
2023 年 5 月 10 日
發布 androidx.activity:activity:1.8.0-alpha04
、androidx.activity:activity-compose:1.8.0-alpha04
和 androidx.activity:activity-ktx:1.8.0-alpha04
。此版本是由內部分支版本發布。
修正錯誤
- 自 Activity 1.7.1 起:- 將
ComponentActivity
與ActivityScenario
搭配使用時,ReportFullyDrawExecuter
不會再發生漏失。(Id2ff2、b/277434271)。
1.8.0-alpha03 版
2023 年 4 月 12 日
發布 androidx.activity:activity:1.8.0-alpha03
、androidx.activity:activity-compose:1.8.0-alpha03
和 androidx.activity:activity-ktx:1.8.0-alpha03
。此版本是由內部分支版本發布。
新功能
- 新增
ComponentActivity.setUpEdgeToEdge()
,以便以回溯相容的方式輕鬆設定無邊框螢幕。
API 變更
ComponentActivity.onBackPressed()
已淘汰,改用 API 處理返回。開發人員現在應使用OnBackPressedDispatcher
,而非覆寫這個方法。(Ibce2f、b/271596918)。ComponentDialog
和ComponentActivity
現在包含公開 APIinitViewTreeOwners()
,可用於在設定內容檢視畫面之前,初始化所有檢視區塊擁有者。(Ibdce0、b/261314581)。
修正錯誤
- 修正 Fragment 會錯誤地使 MenuHost 失效,導致活動中的其他選單出現非預期行為的問題。(I9404e、b/244336571)。
其他變更
ActivityResultRegister
現在使用 KotlinRandom
,而非 Java。(I4d98f、b/272096025)。
1.8.0-alpha02 版
2023 年 3 月 8 日
發布 androidx.activity:activity:1.8.0-alpha02
、androidx.activity:activity-compose:1.8.0-alpha02
和 androidx.activity:activity-ktx:1.8.0-alpha02
。由內部分支版本開發而成。
依附元件更新
- 從 Activity
1.7.0-rc01
起:Activity 現在依附於Lifecycle 2.6.0
。
1.8.0-alpha01 版
2023 年 2 月 8 日
發布 androidx.activity:activity:1.8.0-alpha01
、androidx.activity:activity-compose:1.8.0-alpha01
和 androidx.activity:activity-ktx:1.8.0-alpha01
。此版本是以內部分支版本為基礎。
新功能
OnBackPressedCallback
類別現已納入新的預測返回進度回呼,用於處理返回手勢的啟動動作、整個手勢的進度,以及先前在執行返回手勢時,所用handleOnBackPressed()
回呼以外的取消返回手勢。
1.7 版
1.7.2 版
2023 年 5 月 24 日
發布 androidx.activity:activity:1.7.2
、androidx.activity:activity-compose:1.7.2
和 androidx.activity:activity-ktx:1.7.2
。1.7.2 版包含以下修訂項目。
修正錯誤
- 修正在呼叫
report
前離開畫面時,ReportDrawn
會停止運作的問題。(Ic46f1、b/260506820)。
1.7.1 版
2023 年 4 月 19 日
發布 androidx.activity:activity:1.7.1
、androidx.activity:activity-compose:1.7.1
和 androidx.activity:activity-ktx:1.7.1
。1.7.1 版包含以下修訂項目。
修正錯誤
- 將
ComponentActivity
與ActivityScenario
搭配使用時,ReportFullyDrawExecuter
不會再發生漏失。(Id2ff2、b/277434271)。
1.7.0 版
2023 年 3 月 22 日
發布 androidx.activity:activity:1.7.0
、androidx.activity:activity-compose:1.7.0
和 androidx.activity:activity-ktx:1.7.0
。1.7.0 版包含以下修訂項目。
自 1.6.0 版以來的重要變更
PickVisualMedia
和PickMultipleVisualMedia
中的相片挑選工具活動合約已更新,在MediaStore.ACTION_PICK_IMAGES
無法使用時,會提供額外的備用方案,讓原始設備製造商 (OEM) 和系統應用程式 (例如 Google Play 服務) 在更多 Android 裝置和 API 級別上,透過實作備用動作,提供一致的相片挑選工具體驗。如果可用,相片挑選工具會使用這個備用方案,然後再改用Intent.ACTION_OPEN_DOCUMENT
,後者仍支援所有 API 19 以上版本的裝置。ComponentDialog
類別現在會實作SavedStateRegistryOwner
,而且可存取本身的SavedStateRegistry
,並為ViewTree
設定SavedStateRegistryOwner
。由於ComponentDialog
符合透過ViewTree
API 要求附加至視窗的LifecycleOwner
和SavedStateRegistryOwner
,因此目前可在此類別中使用 Jetpack Compose。IntentSenderRequest.Builder.setFlags()
現在可讓您從Intent
設定多個標記,而不只是單一標記。
Kotlin 轉換
許多 Activity 類別已轉換為 Kotlin。所有已轉換的類別仍保有與先前版本的二進位相容性。以下類別的 Kotlin 程式碼有與原始碼不相容的變更:ActivityResultRegistryOwner
、OnBackPressedDispatcherOwner
。
下表列出新版活動的來源轉換:
活動 1.5 | 活動 1.6 |
---|---|
override fun getActivityResultRegistry() = activityResultRegistry |
override val activityResultRegistry = activityResultRegistry |
override fun getOnBackPressedDispatcher() = onBackPressedDispatcher |
override val onBackPressedDispatcher = onBackPressedDispatcher |
這些類別也已轉換為 Kotlin,但仍保持來源相容性:ContextAware
、ContextAwareHelper
、OnContextAvailableListener
、IntentSenderRequest
和 OnBackPressedDispatcher
FullyDrawnReporter API
ComponentActivity
現在提供 FullyDrawnReporter
執行個體,讓多個元件可以在為互動準備就緒時回報。ComponentActivity
會等待所有元件完成,再代表您呼叫 reportFullyDrawn()
。這些 API 會為您處理時間需求,不需要作為 onDraw
呼叫的一部分進行呼叫。
建議您啟用下列 API:
- 在啟動完成後為 Android 執行階段進行訊號,以確保在多頁框啟動序列期間執行的所有程式碼都已納入,並優先進行背景編譯。
- 應該將應用程式的 Macrobenchmark 和 Play Vitals 列入考量,據此評估應用程式的啟動指標是否完整繪製,以便追蹤效能。
已新增三個 Activity Compose API,方便您使用個別可組合函式中的 FullyDrawnReporter
:
ReportDrawn
表示可組合項可立即準備好進行互動。ReportDrawnWhen
述詞 (例如list.count > 0
) 表示可組合元件何時可互動。ReportDrawnAfter
採用暫停方法,完成後就會表示您已為互動準備就緒。
依附元件更新
- Activity 現在依附於 Lifecycle
2.6.1
。(8fc31d) - Activity 現在依附於 ProfileInstaller
1.3.0
。(83d3b1)
1.7.0-rc01 版
2023 年 3 月 8 日
發布 androidx.activity:activity:1.7.0-rc01
、androidx.activity:activity-compose:1.7.0-rc01
和 androidx.activity:activity-ktx:1.7.0-rc01
。1.7.0-rc01 版包含以下修訂項目。
依附元件更新
- Activity 現在依附於
Lifecycle 2.6.0
。
1.7.0-beta02 版
2023 年 2 月 22 日
發布 androidx.activity:activity:1.7.0-beta02
、androidx.activity:activity-compose:1.7.0-beta02
和 androidx.activity:activity-ktx:1.7.0-beta02
。1.7.0-beta02 版包含以下修訂項目。
API 變更
PickVisualMedia
和PickMultipleVisualMedia
合約會在MediaStore.ACTION_PICK_IMAGES
無法使用時,使用 action 和 extra 做為備用方案,這些現在都是公開常數,可為 OEM 和系統應用程式提供 API 穩定性,讓這些應用程式提供一致的相片挑選工具體驗。這項備用方案的實作方式仍僅限於系統應用程式。(Icd320)
1.7.0-beta01 版
2023 年 2 月 8 日
發布 androidx.activity:activity:1.7.0-beta01
、androidx.activity:activity-compose:1.7.0-beta01
和 androidx.activity:activity-ktx:1.7.0-beta01
。1.7.0-beta01 版包含以下修訂項目。
新功能
IntentSenderRequest.Builder.setFlags()
現在可讓您從Intent
設定多個標記,而不只是單一標記。(Iac04c)
修正錯誤
PickVisualMedia
的備用方案可在架構相片選擇器無法使用時派上用場,現在也會妥善限定作業程序僅處理裝置系統映像檔中安裝的應用程式。(If8ae6)
Kotlin 轉換
ActivityResultRegistryOwner
現在以 Kotlin 編寫。對以 Kotlin 編寫的類別而言,這是與原始碼不相容的變更,因此您現在必須覆寫activityResultRegistry
屬性,而不是導入先前的getActivityResultRegistry()
函式。(I0b00e)OnBackPressedDispatcherOwner
現在以 Kotlin 編寫。對以 Kotlin 編寫的類別而言,這是與原始碼不相容的變更,因此您現在必須覆寫onBackPressedDispatcher
屬性,而不是導入先前的getOnBackPressedDispatcher
函式。(Ia277d)ContextAware
、ContextAwareHelper
、OnContextAvailableListener
、IntentSenderRequest
和OnBackPressedDispatcher
現在是以 Kotlin 編寫。(I1a73e、Iada92、aosp/2410754、I18ac7、b/257291701)。
1.7.0-alpha04 版
2023 年 1 月 25 日
發布 androidx.activity:activity:1.7.0-alpha04
、androidx.activity:activity-compose:1.7.0-alpha04
和 androidx.activity:activity-ktx:1.7.0-alpha04
。1.7.0-alpha04 版包含此連結所列的修訂項目。
新功能
PickVisualMedia
和PickMultipleVisualMedia
Activity Result 合約現在會使用 Google Play 服務提供的相片挑選工具,而此工具會在 Android 系統提供的相片挑選工具 (例如MediaStore.ACTION_PICK_IMAGES
) 無法使用時提供。僅偵測出 Android 系統提供的相片挑選工具的isPhotoPickerAvailable()
API 已淘汰,建議您使用全新的isPhotoPickerAvailable(Context)
API。如果上述兩種系統提供的相片挑選工具其中之一可供使用,就會傳回這個 API (I55be6)。
1.7.0-alpha03 版
2023 年 1 月 11 日
發布 androidx.activity:activity:1.7.0-alpha03
、androidx.activity:activity-compose:1.7.0-alpha03
和 androidx.activity:activity-ktx:1.7.0-alpha03
。1.7.0-alpha03 版包含以下修訂項目。
新功能
ComponentDialog
類別現在會實作SavedStateRegistryOwner
,而且可存取本身的SavedStateRegistry
,並為 ViewTree 設定SavedStateRegistryOwner
。由於ComponentDialog
符合透過 ViewTree API 要求附加至視窗的LifecycleOwner
和SavedStateRegistryOwner
,因此目前可在此類別中使用 Jetpack Compose (Idca17、I73468、b/261162296)。
API 變更
- 新增
ReportDrawn
可組合項,這會立即將活動標示為準備好呼叫reportFullyDrawn
(Ic5b14、b/259687964)。
Kotlin 轉換
ActvitiyResultCallback
和OnBackPressedCallback
類別皆已轉換為 Kotlin,同時保持來源和二進位檔相容性 (Ifc5e5、Ide1b0、b/257291701)。
1.7.0-alpha02 版
2022 年 10 月 24 日
發布了 androidx.activity:activity:1.7.0-alpha02
、androidx.activity:activity-compose:1.7.0-alpha02
和 androidx.activity:activity-ktx:1.7.0-alpha02
。1.7.0-alpha02 版包含此連結所列的修訂項目。
修正錯誤
- 自 Activity
1.6.1
起修正以下問題:使用maxItems
預設值時,Android R 裝置上不會啟動PickMultipleVisualMedia
Activity Result 合約 (Ie2776、b/249182130)。
1.7.0-alpha01 版
2022 年 10 月 5 日
發布了 androidx.activity:activity:1.7.0-alpha01
、androidx.activity:activity-compose:1.7.0-alpha01
和 androidx.activity:activity-ktx:1.7.0-alpha01
。1.7.0-alpha01 版包含此連結所列的修訂項目。
FullyDrawnReporter API
ComponentActivity
現在提供 FullyDrawnReporter
執行個體,讓多個元件可以在為互動準備就緒時回報。ComponentActivity
會等待所有元件完成,再代表您呼叫 reportFullyDrawn()
。這些 API 會為您處理時間需求,不需要作為 onDraw
呼叫的一部分進行呼叫。
建議您啟用下列 API:
- 在啟動完成後為 Android 執行階段進行訊號,以確保在多頁框啟動序列期間執行的所有程式碼都已納入,並優先進行背景編譯。
- 應該將應用程式的 Macrobenchmark 和 Play Vitals 列入考量,據此評估應用程式的啟動指標是否完整繪製,以便追蹤效能。
已新增兩個 Activity Compose API,方便您使用個別可組合函式中的 FullyDrawnReporter
:
ReportDrawnWhen
述詞 (例如list.count > 0
) 表示可組合元件何時可互動。ReportDrawnAfter
採用暫停方法,完成後就會表示您已為互動準備就緒。
1.6.1 版
1.6.1 版
2022 年 10 月 24 日
發布了 androidx.activity:activity:1.6.1
、androidx.activity:activity-compose:1.6.1
和 androidx.activity:activity-ktx:1.6.1
。1.6.1 版包含此連結所列的修訂項目。
修正錯誤
- 修正了以下問題:使用
maxItems
的預設值時,無法在 Android R 裝置上啟動PickMultipleVisualMedia
Activity Result 合約 (Ie2776、b/249182130)
1.6.0 版
1.6.0 版
2022 年 9 月 21 日
發布了 androidx.activity:activity:1.6.0
、androidx.activity:activity-compose:1.6.0
和 androidx.activity:activity-ktx:1.6.0
。1.6.0 版包含以下修訂項目。
自 1.5.0 版以來的重要變更
- 新增了
ActivityResultContracts.PickVisualMedia
和ActivityResultContracts.PickMultipleVisualMedia
,以便提供具有回溯相容性的合約,依照此合約,系統會在相片挑選工具可用時使用MediaStore.ACTION_PICK_IMAGES
,而在相片挑選工具無法使用時則使用Intent.ACTION_OPEN_DOCUMENT
。 - 將 Android 13 中的
OnBackInvokedCallback
整合至ComponentActivity
和ComponentDialog
提供的OnBackPressedDispatchers
。這可確保在啟用預測返回手勢時,OnBackPressedDispatcher
上建立的所有 API 都能正常運作。
1.6.0-rc02 版
2022 年 9 月 7 日
發布了 androidx.activity:activity:1.6.0-rc02
、androidx.activity:activity-compose:1.6.0-rc02
和 androidx.activity:activity-ktx:1.6.0-rc02
。1.6.0-rc02 版包含以下修訂項目。
修正錯誤
- 註冊
OnBackInvokedCallback
時,OnBackPressedDispatcher
現在會使用PRIORITY_DEFAULT
而不是PRIORITY_OVERLAY
(I3901f)。 - 擴充
ComponentActivity
的類別現在一律會分派兩個onMultiWindowModeChanged()
回呼 (Ic4d85)。 - 如果
launch
呼叫擲回任何Exception
,且註冊的回呼沒有LifecycleOwner
,ActivityResultRegistry
不會再傳回結果給ActivityResultCallback
(Ia7ff7、b/238350794)。 ComponentActivity
現在可以正確分派選單呼叫,不必呼叫活動中的超級函式 (Ie33c5、b/238057118)
依附元件更新
Activity
程式庫現在依附於 Lifecycle2.5.1
(If6697)。
1.6.0-rc01 版
2022 年 8 月 24 日
發布了 androidx.activity:activity:1.6.0-rc01
、androidx.activity:activity-compose:1.6.0-rc01
和 androidx.activity:activity-ktx:1.6.0-rc01
。1.6.0-rc01 版包含以下修訂項目。
修正錯誤
- 使用 33 以下的 SDK 版本時,初始化
OnBackPressedDispatcher
不會再造成ClassVerificationError
(Ic32e1)。 - 如果類別覆寫
ComponentActivity
的onPictureInPictureModeChanged()
回呼,現在一律會分派回呼 (Ib7fdb)。
1.6.0-beta01 版
2022 年 8 月 10 日
發布了 androidx.activity:activity:1.6.0-beta01
、androidx.activity:activity-compose:1.6.0-beta01
和 androidx.activity:activity-ktx:1.6.0-beta01
。1.6.0-beta01 版包含以下修訂項目。
API 變更
- 每當傳遞
null
時都會導致當機,因此以@NonNull
標記ComponentActivity
已淘汰的startActivityForResult
和startIntentSenderForResult
方法 (Id2a25、b/231476082)。
修正錯誤
- 自 Activity
1.5.1
起︰當launch
呼叫擲回任何Exception
且註冊的回呼沒有LifecycleOwner
時,ActivityResultRegistry
不會再傳回結果給ActivityResultCallback
(Ia7ff7、b/238350794)。 - 自 Activity
1.5.1
起︰ComponentActivity
現在可正確分派選單呼叫給onPrepareOptionMenu()
、onCreateOptionsMenu()
和onOptionsItemSelected()
覆寫,而無須呼叫超級函式 (Ie33c5、b/238057118)。
依附元件更新
1.6.0-alpha05 版
2022 年 6 月 15 日
發布了 androidx.activity:activity:1.6.0-alpha05
、androidx.activity:activity-compose:1.6.0-alpha05
和 androidx.activity:activity-ktx:1.6.0-alpha05
。1.6.0-alpha05 版先前是以私人預先發布分支版本的形式開發,並無公開修訂項目。
API 變更
minCompileSdk
目前為 33,以便配合 Tiramisu Beta 3 SDK
修正錯誤
- 修復了針對
PickVisualMedia
ActivityResultContract
執行 SDK 擴充功能檢查時,舊版裝置會當機的問題,這樣一來,應能在執行 Android 10 或較舊版本的裝置上將其與ACTION_OPEN_DOCUMENT
搭配使用。
1.6.0-alpha04 版
2022 年 5 月 18 日
發布 androidx.activity:activity:1.6.0-alpha04
和 androidx.activity:activity-ktx:1.6.0-alpha04
。
修正錯誤
- 修正了以下錯誤:在
PickVisualMediaRequest
中,嘗試透過建構工具或頂層 Kotlin 函式建立要求時,會導致堆疊溢位。 - 將 Android 13 開發人員 Beta 版 2 中的
OnBackInvokedCallback
整合至ComponentDialog
提供的OnBackPressedDispatcher
。這可確保在啟用預測返回手勢時,OnBackPressedDispatcher
上建立的所有 API 都能正常運作。
1.6.0-alpha03 版
2022 年 4 月 27 日
發布了 androidx.activity:activity:1.6.0-alpha03
、androidx.activity:activity-compose:1.6.0-alpha03
和 androidx.activity:activity-ktx:1.6.0-alpha03
。
- 注意:這個版本只會針對 Android 13 開發人員 Beta 版 1 SDK 進行編譯。
新功能
- 新增了
ActivityResultContracts.PickVisualMedia
和ActivityResultContracts.PickMultipleVisualMedia
,以便提供具有回溯相容性的合約,依照此合約,系統會在相片挑選工具可用時使用MediaStore.ACTION_PICK_IMAGES
,而在相片挑選工具無法使用時則使用Intent.ACTION_OPEN_DOCUMENT
。 - 將 Android 13 開發人員 Beta 版 1 中的
OnBackInvokedCallback
整合至ComponentActivity
提供的OnBackPressedDispatcher
。這可確保在啟用預測返回手勢時,OnBackPressedDispatcher
上建立的所有 API 都能正常運作。
1.6.0-alpha01 版
2022 年 3 月 23 日
發布了 androidx.activity:activity:1.6.0-alpha01
、androidx.activity:activity-compose:1.6.0-alpha01
和 androidx.activity:activity-ktx:1.6.0-alpha01
。
- 注意:這個版本只會針對 Android 13 開發人員預覽版 2 SDK 進行編譯。
新功能
- 將 Android 13 開發人員預覽版 2 中的變更內容整合至
ComponentActivity
。
1.5.1 版
1.5.1 版
2022 年 7 月 27 日
發布了 androidx.activity:activity:1.5.1
、androidx.activity:activity-compose:1.5.1
和 androidx.activity:activity-ktx:1.5.1
。1.5.1 版包含此連結所列的修訂項目。
修正錯誤
如果
launch()
呼叫擲回任何Exception
,且註冊的回呼沒有LifecycleOwner
,ActivityResultRegistry
不會再傳回結果給ActivityResultCallback
(Ia7ff7、b/238350794)。ComponentActivity
現在可正確地將選單呼叫分派到onPrepareOptionMenu()
、onCreateOptionsMenu()
和onOptionsItemSelected()
覆寫,不必呼叫超級函式 (Ie33c5、b/238057118)。
依附元件更新
Activity
程式庫現在依附於 Lifecycle2.5.1
(If6697)。
1.5.0 版
1.5.0 版
2022 年 6 月 29 日
發布了 androidx.activity:activity:1.5.0
、androidx.activity:activity-compose:1.5.0
和 androidx.activity:activity-ktx:1.5.0
。1.5.0 版包含以下修訂版本。
自 1.4.0 版以來的重要異動
- ComponentDialog -
ComponentDialog
是Dialog
的子類別,其中包含在對話方塊出現後按下系統返回按鈕時呼叫的OnBackPressedDispatcher
。重要的是,這個子類別還設定了ViewTreeOnBackPressedDispatcherOwner
,允許檢視畫面以一般方式擷取正確的調度程式,無論其存在於ComponentActivity
或ComponentDialog
中。 - 回呼介面 -
ComponentActivity
現在可實作一組模組化回呼介面,可用於取代Activity
回呼。這些介面包括:OnNewIntentProvider
、OnConfigurationChangedProvider
、OnTrimMemoryProvider
、OnPictureInPictureModeChangedProvider
、OnMultiWindowModeChangedProvider
- CreationExtras 整合 -
ComponentActivity
現在可透過 Lifecycle2.5.0
的CreationExtras
提供無狀態ViewModelProvider.Factory
。
其他變更
ActivityResultContracts.CreateDocument
的無參數建構函式已淘汰,取而代之的是採用具體 MIME 類型 (例如 「image/png」) 的新建構函數,如Intent.ACTION_CREATE_DOCUMENT
所要求。
1.5.0-rc01 版
2022 年 5 月 11 日
發布 androidx.activity:activity:1.5.0-rc01
、androidx.activity:activity-compose:1.5.0-rc01
和 androidx.activity:activity-ktx:1.5.0-rc01
,且自 1.5.0-beta01 版以來皆無異動。1.5.0-rc01 版包含以下修訂項目。
1.5.0-beta01 版
2022 年 4 月 20 日
發布了 androidx.activity:activity:1.5.0-beta01
、androidx.activity:activity-compose:1.5.0-beta01
和 androidx.activity:activity-ktx:1.5.0-beta01
。1.5.0-beta01 版包含以下修訂項目。
依附元件更新
- Activity 現在依附於 Lifecycle
2.4.0-beta01
。
1.5.0-alpha05 版
2022 年 4 月 6 日
發布了 androidx.activity:activity:1.5.0-alpha05
、androidx.activity:activity-compose:1.5.0-alpha05
和 androidx.activity:activity-ktx:1.5.0-alpha05
。1.5.0-alpha05 版包含以下修訂項目。
修正錯誤
ComponentActivity
的onPanelClosed()
現在也會呼叫超級onPanelClosed()
,並修正無法呼叫onContextMenuClosed
方法的問題。(Ib6f77)
1.5.0-alpha04 版
2022 年 3 月 23 日
發布了 androidx.activity:activity:1.5.0-alpha04
、androidx.activity:activity-compose:1.5.0-alpha04
和 androidx.activity:activity-ktx:1.5.0-alpha04
。1.5.0-alpha04 版包含此連結所列的修訂項目。
修正錯誤
SavedStateViewFactory
現在支援使用CreationExtras
(即使已透過SavedStateRegistryOwner
初始化)。如果提供額外項目,系統將忽略初始化的引數 (I6c43b、b/224844583)。
1.5.0-alpha03 版
2022 年 2 月 23 日
發布了 androidx.activity:activity:1.5.0-alpha03
、androidx.activity:activity-compose:1.5.0-alpha03
和 androidx.activity:activity-ktx:1.5.0-alpha03
。1.5.0-alpha03 版包含以下修訂項目。
API 變更
- 您現在可以將
CreationExtras
傳遞至 activityby viewModels()
函式 (I6a3e6、b/217600303)
1.5.0-alpha02 版
2022 年 2 月 9 日
發布了 androidx.activity:activity:1.5.0-alpha02
、androidx.activity:activity-compose:1.5.0-alpha02
和 androidx.activity:activity-ktx:1.5.0-alpha02
。1.5.0-alpha02 版包含此連結所列的修訂項目。
新功能
ComponentActivity
現在會實作OnPictureInPictureModeChangedProvider
介面,讓任何元件都可接收子母畫面模式變更事件。(I9f567)ComponentActivity
現在會實作OnMultiWindowModeChangedProvider
介面,讓任何元件都可接收多視窗模式變更事件。(I62d91)
1.5.0-alpha01 版
2022 年 1 月 26 日
發布了 androidx.activity:activity:1.5.0-alpha01
、androidx.activity:activity-compose:1.5.0-alpha01
和 androidx.activity:activity-ktx:1.5.0-alpha01
。1.5.0-alpha01 版包含此連結所列的修訂項目。
新功能
ComponentActivity
現已整合 ViewModel CreationExtras,後者為自 Lifecycle2.5.0-alpha01
起引入的概念 (Ie7e00、b/207012584)。- 新增
ComponentDialog
,這是Dialog
的子類別,其中包含在對話方塊出現後按下系統返回按鈕時呼叫的OnBackPressedDispatcher
。重要的是,這個子類別還設定了ViewTreeOnBackPressedDispatcherOwner
,允許 View 以一般方式擷取正確的調度程式,無論其存在於ComponentActivity
或ComponentDialog
中。(I8a1bc) ComponentActivity
現在會實作新的OnNewIntentProvider
介面,讓任何元件都可接收這些事件 (If1f8b)ComponentActivity
現在會實作新的OnConfigurationChangedProvider
介面,讓任何元件都可接收這些事件 (If623b)ComponentActivity
現在會實作新的OnTrimMemoryProvider
介面,讓任何元件都可接收這些事件 (Ia9295)。
API 變更
ActivityResultContracts.CreateDocument
的無參數建構函式已淘汰,取而代之的是採用具體 MIME 類型 (例如"image/png"
) 的新建構函式,如Intent.ACTION_CREATE_DOCUMENT
所要求。(I2bec6)- 現在可以透過
ViewTreeOnBackPressedDispatcherOwner
擷取與 View 關聯的OnBackPressedDispatcherOwner
,而不是依賴於轉換Context
。(I74685)
修正錯誤
- 修正了以下問題:首次透過
registerForActivityResult()
回呼 (或對LifecycleObserver
的回呼,以ComponentActivity
的init
部分新增) 存取ViewModel
時會發生異常終止情形 (Ife83f)。
1.4.0 版
1.4.0 版
2021 年 10 月 27 日
發布了 androidx.activity:activity:1.4.0
、androidx.activity:activity-compose:1.4.0
和 androidx.activity:activity-ktx:1.4.0
。1.4.0 版包含以下修訂項目。
自 1.3.0 版以來的重要異動
- AndroidX
ComponentActivity
現在會實作MenuHost
介面。如此一來,任何元件都能向活動新增MenuProvider
執行個體,藉此將選單項目新增至ActionBar
。可視需要為每個MenuProvider
加上Lifecycle
,以便能夠根據Lifecycle
狀態自動控制這些選單項目的顯示設定,以及在Lifecycle
被刪除時負責移除MenuProvider
。 ActivityResultContract
類別已經以 Kotlin 重新編寫,確保開發人員使用 Kotlin 編寫自訂合約時,能夠對輸入和輸出類別定義正確的是否可為空值設定。ActivityResultContracts
類別和其合約已經以 Kotlin 重新編寫,以確保提供了適當的是否可為空值設定。
1.4.0-rc01 版
2021 年 10 月 13 日
發布了 androidx.activity:activity:1.4.0-rc01
、androidx.activity:activity-compose:1.4.0-rc01
和 androidx.activity:activity-ktx:1.4.0-rc01
。1.4.0-rc01 版包含此連結所列的修訂項目。
修正錯誤
- 當
launch
呼叫擲回任何Exception
時,ActivityResultRegistry
不會再傳回結果給ActivityResultCallback
(If4f91、b/200845664)。
1.4.0-beta01 版
2021 年 9 月 29 日
發布了 androidx.activity:activity:1.4.0-beta01
、androidx.activity:activity-compose:1.4.0-beta01
和 androidx.activity:activity-ktx:1.4.0-beta01
。1.4.0-beta01 版本包含這些修訂版本。
API 變更
- 修正了
ActivityResultContracts.OpenMultipleDocuments
和ActivityResultContracts.GetMultipleContents
的類型,這項問題會在使用透過 Java 程式設計語言編寫的程式碼時,導致使用List<? extends Uri>
的輸出類型 (If71de)。 - 現在,在透過
ActivityResultContracts.StartActivityForResult
、ActivityResultContracts.StartIntentSenderForResult
以及ActivityResultContracts.RequestMultiplePermissions
類別中現在公開的Companion
物件使用 Kotlin 時,可以存取其中的常數 (aosp/1832555)
說明文件更新
- API 的淘汰訊息現在已由 Activity Result API (即
startActivityForResult
、startIntentSenderForResult
、onActivityResult
、requestPermissions
和onRequestPermissionsResult
) 處理,並已加以擴充以提供更多詳細資料。(cce80f)
1.4.0-alpha02 版
2021 年 9 月 15 日
發布了 androidx.activity:activity:1.4.0-alpha02
、androidx.activity:activity-compose:1.4.0-alpha02
和 androidx.activity:activity-ktx:1.4.0-alpha02
。1.4.0-alpha02 版包含此連結所列的修訂項目。
新功能
activity-compose
構件現在包含LaunchDuringComposition
Lint 錯誤,會讓您無法呼叫ActivityResultLauncher
的launch
方法以將其加入組成,這是因為組成不應有副作用。請使用 API 處理副作用 (7c2bbe、b/191347220)。
API 變更
ActivityResultContract
類別已經以 Kotlin 重新編寫,確保開發人員使用 Kotlin 編寫自訂合約時,能夠對輸入和輸出類別定義正確的是否可為空值設定 (I8a8f5)ActivityResultContracts
類別和其合約已經以 Kotlin 重新編寫,以確保提供了適當的是否可為空值設定 (I69802)
1.4.0-alpha01 版
2021 年 9 月 1 日
發布了 androidx.activity:activity:1.4.0-alpha01
、androidx.activity:activity-compose:1.4.0-alpha01
和 androidx.activity:activity-ktx:1.4.0-alpha01
。1.4.0-alpha01 版包含以下修訂版本。
新功能
- AndroidX
ComponentActivity
現在會實作MenuHost
介面。如此一來,任何元件都能向活動新增MenuProvider
執行個體,藉此將選單項目新增至ActionBar
。可視需要為每個MenuProvider
加上Lifecycle
,以便能夠根據Lifecycle
狀態自動控制這些選單項目的顯示設定,以及在Lifecycle
被刪除時負責移除MenuProvider
(I3b608):
/**
* Using the addMenuProvider() API directly in your Activity
**/
class ExampleActivity : ComponentActivity(R.layout.activity_example) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Add menu items without overriding methods in the Activity
addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
// Add menu items here
menuInflater.inflate(R.menu.example_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
// Handle the menu selection
return true
}
})
}
}
/**
* Using the addMenuProvider() API in a Fragment
**/
class ExampleFragment : Fragment(R.layout.fragment_example) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// The usage of an interface lets you inject your own implementation
val menuHost: MenuHost = requireActivity()
// Add menu items without using the Fragment Menu APIs
// Note how we can tie the MenuProvider to the viewLifecycleOwner
// and an optional Lifecycle.State (here, RESUMED) to indicate when
// the menu should be visible
menuHost.addMenuProvider(object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
// Add menu items here
menuInflater.inflate(R.menu.example_menu, menu)
}
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
// Handle the menu selection
return true
}
}, viewLifecycleOwner, Lifecycle.State.RESUMED)
}
行為變更
- 在嘗試對尚未註冊或已取消註冊的
ActivityResultLauncher
呼叫launch()
時,ActivityResultRegistry
現在會擲回IllegalStateException
(Ida75d、b/192567522)
外部貢獻
1.3.1 版
1.3.1 版
2021 年 8 月 4 日
發布了 androidx.activity:activity:1.3.1
、androidx.activity:activity-compose:1.3.1
和 androidx.activity:activity-ktx:1.3.1
。1.3.1 版包含此連結所列的修訂項目。
依附元件更新
- Activity 現在依附於 Kotlin
1.5.21
。 - Activity Compose 現在依附於 Compose
1.0.1
。
1.3.0 版
1.3.0 版
2021 年 7 月 28 日
發布了 androidx.activity:activity:1.3.0
、androidx.activity:activity-compose:1.3.0
和 androidx.activity:activity-ktx:1.3.0
。1.3.0 版包含此連結所列的修訂項目。
自 1.2.0 版以來的重要異動
- Activity Compose 構件 -
activity-compose
構件提供setContent
擴充功能方法和 Compose 專屬包裝函式,此方法用於代管活動中的 Jetpack Compose UI,該函式則用來與ComponentActivity
API 互動,以處理系統返回按鈕和 Activity Result API。詳情請參閱說明文件。 - CaptureVideo 合約 -
CaptureVideo
ActivityResultContract
會取代目前已淘汰的TakeVideo
合約,並傳回一個布林值,表示可在許多相機應用程式中運作。 - 子母畫面微調設定檢視畫面追蹤 -
activity-ktx
的使用者現在可以在Activity
上使用trackPipAnimationHintView
擴充方法,以便在相對於視窗的位置變更時,以檢視的新位置自動重建PictureInPictureParams
。
1.3.0-rc02 版
2021 年 7 月 14 日
發布了 androidx.activity:activity:1.3.0-rc02
、androidx.activity:activity-compose:1.3.0-rc02
和 androidx.activity:activity-ktx:1.3.0-rc02
。1.3.0-rc02 版包含此連結所列的修訂項目。
修正錯誤
ActivityResultRegistry
回呼現在會正確儲存與還原,因此回呼不會在 savedState 中重複 (I97816、b/191893160)。
1.3.0-rc01 版
2021 年 7 月 1 日
發布 androidx.activity:activity:1.3.0-rc01
、androidx.activity:activity-compose:1.3.0-rc01
和 androidx.activity:activity-ktx:1.3.0-rc01
,且自 1.3.0-beta02
版以來皆無異動。1.3.0-rc01 版包含此連結所列的修訂項目。
1.3.0-beta02 版
2021 年 6 月 16 日
發布了 androidx.activity:activity:1.3.0-beta02
、androidx.activity:activity-compose:1.3.0-beta02
和 androidx.activity:activity-ktx:1.3.0-beta02
。1.3.0-beta02 版包含此連結所列的修訂項目。
已更新 activity-compose
以依附於 Compose 1.0.0-beta09
。現在,androidx.compose.ui:ui-test-junit4
在 activity-compose
有一個編譯時間依附元件。
1.3.0-beta01 版
2021 年 6 月 2 日
發布了 androidx.activity:activity:1.3.0-beta01
、androidx.activity:activity-compose:1.3.0-beta01
和 androidx.activity:activity-ktx:1.3.0-beta01
。1.3.0-beta01 版包含此連結所列的修訂項目。
API 變更
- 先前淘汰的
@Composable registerForActivityResult()
方法已移除,請使用rememberLauncherForActivityResult()
。(Ic39d3)
1.3.0-alpha08 版
2021 年 5 月 18 日
發布了 androidx.activity:activity:1.3.0-alpha08
、androidx.activity:activity-compose:1.3.0-alpha08
和 androidx.activity:activity-ktx:1.3.0-alpha08
。1.3.0-alpha08 版包含此連結所列的修訂項目。
新功能
- 新的
CaptureVideo
ActivityResultContract
會傳回布林值給ActivityResultCallback
,指示影片是否成功儲存在指定的 URI。這項變更取代現已淘汰的TakeVideo
合約,因為相機應用程式很少支援傳回縮圖點陣圖,因此造成結果不實用。(Ie21f2、b/185938070)。 - 新增了 API
Activity#setPipAnimationHintView
,以便在每次檢視畫面移動時更新 PipParams 的來源 Rect 微調設定 (I9063d)。
API 變更
rememberLauncherForActivityResult
函式現在會傳回可淘汰unregister()
函式的啟動器,註冊和取消註冊啟動器將由rememberLauncherForActivityResult
自動處理。(I2443e)
Compose 相容性
androidx.activity:activity-compose:1.3.0-alpha08
只與1.0.0-beta07
以上的 Compose 版本相容。
1.3.0-alpha07 版
2021 年 4 月 21 日
發布了 androidx.activity:activity:1.3.0-alpha07
、androidx.activity:activity-compose:1.3.0-alpha07
和 androidx.activity:activity-ktx:1.3.0-alpha07
。1.3.0-alpha07 版包含此連結所列的修訂項目。
修正錯誤
rememberLauncherForActivityResult
現在會傳回同一個ActivityResultLauncher
執行個體的穩定參照,即使合約因重組作業而有所變動也是如此 (Id2d6d)- 使用
1.3.0
以上的不穩定版 Fragment 時,系統不會再擲回要求您使用1.3.0
的誤判 Lint 錯誤 (aosp/1670206、b/184847092)
1.3.0-alpha06 版
2021 年 4 月 7 日
發布了 androidx.activity:activity:1.3.0-alpha06
、androidx.activity:activity-compose:1.3.0-alpha06
和 androidx.activity:activity-ktx:1.3.0-alpha06
。1.3.0-alpha06 版包含此連結所列的修訂項目。
API 變更
registerForActivityResult()
API 已重新命名為rememberLauncherForActivityResult()
,以更明確地顯示傳回的ActivityResultLauncher
是系統為您儲存的受管理物件。現在,如果嘗試呼叫unregister
,回傳的ActivityResultLauncher
將會擲回錯誤 (I2bb6d)LocalOnBackPressedDispatcherOwner.current
和LocalActivityResultRegistryOwner.current
現在會傳回可為空值的值,以更準確地判斷這個值是否可用在目前組合中。現在,如果找不到底層擁有者,則需要這些 API 的 API (例如BackHandler
和rememberLauncherForActivityResult()
) 將會分別擲回更具有說明性的錯誤。現在,即使沒有找到OnBackPressedDispatcherOwner
(例如預覽NavHost
時),NavHost
也可正常運作 (I7d8b4)
修正錯誤
- 現在,在發生以下事件時,
BackHandler
會正確攔截按下返回按鈕的操作:Activity 先是STOPPED
,然後再度變為STARTED
,而其他回呼則是透過 LifecycleOwner 新增 (I71de6、b/182284739)。 - 使用
launch()
方法擴充功能 (包含具有Unit
輸入內容的自訂ActivityResultContract
) 時,不會再造成NullPointerException
(I76282、b/183837954)
1.3.0-alpha05 版
2021 年 3 月 24 日
發布了 androidx.activity:activity:1.3.0-alpha05
、androidx.activity:activity-compose:1.3.0-alpha05
和 androidx.activity:activity-ktx:1.3.0-alpha05
。1.3.0-alpha05 版包含此連結所列的修訂項目。
修正錯誤
- 自 Activity 1.2.2 起修正
InvalidFragmentVersionForActivityResult
Lint 檢查中的以下問題:使用 Fragment 1.3.1 以上版本時出現誤判狀況 (I54da1、b/182388985)。 - 從 Activity 1.2.2 起:從之前在另一個
Intent
中以附加項目形式儲存的ActivityResultContract
中啟動Intent
時,ComponentActivity
現在不會再發生ClassNotFoundException
(Ieff05、b/182906230)。
依附元件更新
- 從 Activity 1.2.2 起:Activity 現在依附於 Lifecycle
2.3.1
。
1.3.0-alpha04 版
2021 年 3 月 10 日
發布了 androidx.activity:activity:1.3.0-alpha04
、androidx.activity:activity-compose:1.3.0-alpha04
和 androidx.activity:activity-ktx:1.3.0-alpha04
。1.3.0-alpha04 版包含此連結所列的修訂項目。
修正錯誤
- 從 Activity
1.2.1
起:RequestMultiplePermissions
現在一律會對所有要求的權限傳回結果,而非只傳回先前未授予權限的結果 (I50bc3、b/180884668)。 - 自 Activity
1.2.1
起:現在,即使您執行unregister()
後再次使用相同金鑰執行register()
,ActivityResultRegistry
仍可確保進行中的launch()
要求將傳回其結果 (I9ef34、b/181267562)。 - Activity Compose 不再將測試依附元件新增至執行階段類別路徑。(Ifd8b3)
- 修正了
BackHandler
的以下問題:在重組後,仍會使用先前設定的onBack
lambda (8eb5eb)
1.3.0-alpha03 版
2021 年 2 月 24 日
發布了 androidx.activity:activity:1.3.0-alpha03
、androidx.activity:activity-compose:1.3.0-alpha03
和 androidx.activity:activity-ktx:1.3.0-alpha03
。1.3.0-alpha03 版包含此連結所列的修訂項目。
新功能
- 現在可以使用 Composable
registerForActivityResult
函式從可組合項中的活動取得結果 (Ia7851、b/172690553)。
API 變更
LocalOnBackPressedDispatcherOwner
現在有一個可與CompositionLocalProvider
搭配使用的provides
函式,並取代asProvidableCompositionLocal()
API (I45d24)
1.3.0-alpha02 版
2021 年 2 月 10 日
發布了 androidx.activity:activity:1.3.0-alpha02
、androidx.activity:activity-compose:1.3.0-alpha02
和 androidx.activity:activity-ktx:1.3.0-alpha02
。1.3.0-alpha02 版包含此連結所列的修訂項目。
修正錯誤
- 修正 Activity Compose
1.3.0-alpha01
中的以下問題:使用 Compose1.0.0-alpha12
時出現NoSuchMethodError: No static method setContent
例外狀況。所有 Compose 使用者都應依附於1.3.0-alpha02
以上版本 (b/179911234)
API 變更
BackHandler
API 可用於允許 Composable 攔截系統返回按鈕 (I58ed5、b/172154006)。
1.3.0-alpha01 版
2021 年 2 月 10 日
發布了 androidx.activity:activity:1.3.0-alpha01
、androidx.activity:activity-compose:1.3.0-alpha01
和 androidx.activity:activity-ktx:1.3.0-alpha01
。1.3.0-alpha01 版包含此連結所列的修訂項目。
新功能
- 新的
activity-compose
構件可為androidx.activity
專用的 API 提供 Jetpack Compose 專屬輔助程式。ComponentActivity.setContent
已從androidx.compose.ui.platform.setContent
移至androidx.activity.compose.setContent
。(Icf416)。
已知問題
- 使用 Activity Compose
1.3.0-alpha01
和依附的程式庫 (例如androidx.compose.ui:ui-test-junit4:1.0.0-alpha12
) 時,會發生NoSuchMethodError: No static method setContent
例外狀況 (b/179911234)
1.2.4 版
1.2.4 版
2021 年 7 月 21 日
發布 androidx.activity:activity:1.2.4
和 androidx.activity:activity-ktx:1.2.4
。1.2.4 版包含此連結所列的修訂項目。
修正錯誤
- 自 Activity
1.3.0-rc02
起:ActivityResultRegistry 回呼現在會正確儲存與還原,因此回呼不會在 savedState 中重複 (I97816、b/191893160)。
1.2.3 版
1.2.3 版
2021 年 5 月 5 日
發布 androidx.activity:activity:1.2.3
和 androidx.activity:activity-ktx:1.2.3
。1.2.3 版包含此連結所列的修訂項目。
修正錯誤
- 使用
launch()
方法擴充功能 (包含具有Unit
輸入內容的自訂ActivityResultContract
) 時,不會再造成NullPointerException
(I76282、b/183837954) - 修正誤判的 Lint 錯誤訊息:使用較新版 Fragment 的快照、Alpha 版、Beta 版或 RC 版時,此訊息會提示您使用 Fragment
1.3.0
(f4a57e、b/184847092)。
1.2.2 版
1.2.2 版
2021 年 3 月 24 日
發布 androidx.activity:activity:1.2.2
和 androidx.activity:activity-ktx:1.2.2
。1.2.2 版包含此連結所列的修訂項目。
修正錯誤
- 修正
InvalidFragmentVersionForActivityResult
Lint 檢查中的以下問題:使用 Fragment 1.3.1 以上版本時出現誤判狀況 (I54da1、b/182388985)。 - 從之前在另一個
Intent
中以附加項目形式儲存的ActivityResultContract
中啟動Intent
時,ComponentActivity
現在不會再發生ClassNotFoundException
(Ieff05、b/182906230)。
依附元件更新
- Activity 現在依附於 Lifecycle
2.3.1
。
1.2.1 版
1.2.1 版
2021 年 3 月 10 日
發布 androidx.activity:activity:1.2.1
和 androidx.activity:activity-ktx:1.2.1
。1.2.1 版本包含以下修訂項目。
修正錯誤
RequestMultiplePermissions
現在一律會針對所有要求的權限傳回結果,而非只傳回先前未授予權限的結果 (I50bc3、b/180884668)。- 現在,即使您執行
unregister()
後再次使用相同的金鑰執行register()
,ActivityResultRegistry
仍可確保進行中的launch()
要求將傳回其結果 (I9ef34、b/181267562)。
1.2.0 版
1.2.0 版
2021 年 2 月 10 日
發布 androidx.activity:activity:1.2.0
和 androidx.activity:activity-ktx:1.2.0
。1.2.0 版包含此連結所列的修訂項目。
自 1.1.0 版以來的重大異動
- Activity Result API:
ComponentActivity
現在提供ActivityResultRegistry
,讓您無需覆寫 Activity 或 Fragment 中的方法,即可處理startActivityForResult()
+onActivityResult()
以及requestPermissions()
+onRequestPermissionsResult()
流程、透過ActivityResultContract
提升類型安全,並提供測試這些流程的掛鉤。請參閱最新的從 Activity 取得結果。
ContextAware
:ComponentActivity
現在實作ContextAware
,可讓您新增一或多個OnContextAvailableListener
例項,這些例項可在基礎Activity.onCreate()
「之前」收到回呼。- 暫停的 Kotlin 擴充功能
withContextAvailable()
可讓您在 Context 變為可用時執行非暫停程式碼區塊,並傳回結果。 - Fragment 1.3.0 中的
FragmentActivity
會使用這個 API 來還原FragmentManager
的狀態。任何新增至FragmentActivity
子類別的事件監聽器都會在該事件監聽器之後執行。 - AppCompat 1.3.0-alpha02 以上版本中的
AppCompatActivity
會使用這個 API。任何新增至AppCompatActivity
子類別的事件監聽器都會在該事件監聽器之後執行。
- 暫停的 Kotlin 擴充功能
ViewTree
支援:ComponentActivity
現在支援在 Lifecycle2.3.0
與 SavedState1.1.0
中新增的ViewTreeLifecycleOwner.get(View)
、ViewTreeViewModelStoreOwner.get(View)
和ViewTreeSavedStateRegistryOwner
API,以便針對任何直接新增至ComponentActivity
的 View 傳回 Activity 做為LifecycleOwner
、ViewModelStoreOwner
和SavedStateRegistryOwner
。
- reportFullyDrawn() 向後移植 -
reportFullyDrawn()
的Activity
方法已在ComponentActivity
中向後移植,以便在所有 API 級別中使用、修正 API 19 中的異常終止問題,並為所有 API 級別新增這個方法的追蹤記錄。
1.2.0-rc01 版
2020 年 12 月 16 日
發布 androidx.activity:activity:1.2.0-rc01
和 androidx.activity:activity-ktx:1.2.0-rc01
。1.2.0-rc01 版包含此連結所列的修訂項目。
修正錯誤
ActivityResultRegistry
現在一律會還原已儲存的確切狀態 (Idd56b)。- 新增了
ComponentActivity.reportFullyDrawn
追蹤記錄 (Ic7632)
外部貢獻
ComponentActivity
現在已覆寫reportFullyDrawn()
,讓所有 API 級別中都能呼叫這個方法,並修復了 API 19 裝置在無適當系統權限的情況下呼叫這個方法時發生的異常終止問題。感謝 Simon Schiller!(b/163239764、#103)
1.2.0-beta02 版
2020 年 12 月 2 日
發布 androidx.activity:activity:1.2.0-beta02
和 androidx.activity:activity-ktx:1.2.0-beta02
。1.2.0-beta02 版包含此連結所列的修訂項目。
修正錯誤
- 修正問題:Activity Result API 在透過
Lifecycle
註冊的情況下,不會等到 Lifecycle 變為STARTED
狀態後再傳送結果 (I109ea)。
外部貢獻
- 更新
launch()
的說明文件,明確指出它可能會擲回ActivityNotFoundException
。感謝 Michał Zieliński!(aosp/1493580)
1.2.0-beta01 版
2020 年 10 月 1 日
發布 androidx.activity:activity:1.2.0-beta01
和 androidx.activity:activity-ktx:1.2.0-beta01
。1.2.0-beta01 版包含此連結所列的修訂項目。
修正錯誤
ActivityResultRegistry
現在會隨機產生整數,直到發現未分配做為要求程式碼register()
使用的整數為止,藉此避免因要求程式碼遞增而可能導致整數溢位 (b/168779518)在
ActivityResultLauncher
上呼叫unregister()
時,會正確移除Lifecycle
觀察器 (b/165608393)
行為變更
- 現在,在嘗試使用
Lifecycle
已達到STARTED
的LifecycleOwner
來呼叫register()
時,ActivityResultRegistry
會擲回IllegalStateException
(b/165435866)
說明文件更新
ContextAware
說明文件會連結至LifecycleOwner
,藉此醒目顯示Lifecycle
回呼,以做為建立和刪除事件的適當位置。(aosp/1414152)
1.2.0-alpha08 版
2020 年 8 月 19 日
發布 androidx.activity:activity:1.2.0-alpha08
和 androidx.activity:activity-ktx:1.2.0-alpha08
。1.2.0-alpha08 版包含此連結所列的修訂項目。
新功能
ComponentActivity
現在實作ContextAware
,可讓您新增一或多個OnContextAvailableListener
例項,這些例項可在基本Activity.onCreate()
之前收到回呼 (b/161390636)- 暫停的 Kotlin 擴充功能
withContextAvailable()
可讓您在 Context 可供使用時執行非暫停程式碼區塊,並傳回結果 (I8290c) - Fragment 1.3.0-alpha08 中的
FragmentActivity
會使用這個 API 來還原FragmentManager
的狀態。任何新增至FragmentActivity
子類別的事件監聽器都會在該事件監聽器之後執行。(I513da) - AppCompat 1.3.0-alpha02 中的
AppCompatActivity
會使用這個 API。任何新增至AppCompatActivity
子類別的事件監聽器都會在該事件監聽器之後執行。(I513da)
- 暫停的 Kotlin 擴充功能
修正錯誤
- 修正了在使用 Lint 27.1.0 以上版本時造成
ActivityResultFragmentVersionDetector
Lint 檢查中斷的問題 (b/162155191)
1.2.0-alpha07 版
2020 年 7 月 22 日
發布 androidx.activity:activity:1.2.0-alpha07
和 androidx.activity:activity-ktx:1.2.0-alpha07
。1.2.0-alpha07 版包含此連結所列的修訂項目。
新功能
- 在使用 Activity Result API 時新增
InvalidFragmentVersionForActivityResult
Lint 檢查,以驗證您正在使用的是 Fragment1.3.0-alpha07
,避免執行階段因「要求程式碼無效」問題而停止運作,以及因使用舊版 Fragment 而導致權限要求無法運作。(b/152554847)
外部貢獻
- 修正了針對
RequestPermission
Activity Result 合約剖析結果時出現的ArrayIndexOutOfBoundsException
(I8f9e3、b/161057605)。
1.2.0-alpha06 版
2020 年 6 月 10 日
發布了 androidx.activity:activity:1.2.0-alpha06
和 androidx.activity:activity-ktx:1.2.0-alpha06
。1.2.0-alpha06 版包含此連結所列的修訂項目。
新功能
- 您現在可以在 Kotlin 中解構
ActivityResult
類別,以直接存取requestCode
和intent
(b/157212935) ActivityResultLauncher
現在可讓您取得過去用於註冊啟動器的ActivityResultContract
(b/156875743)
API 變更
- 破壞性變更:
ActivityResultRegistry
中的invoke()
方法已重新命名為onLaunch()
(b/157496491) - 如果未傳回任何結果,
OpenMultipleDocuments
合約現在會向已註冊的回呼傳回空白清單,而不是null
(b/157348014)。
1.2.0-alpha05 版
2020 年 5 月 20 日
發布 androidx.activity:activity:1.2.0-alpha05
和 androidx.activity:activity-ktx:1.2.0-alpha05
。1.2.0-alpha05 版包含此連結所列的修訂項目。
新功能
- 現在可在
ComponentActivity
中使用View
時執行 Lifecycle2.3.0-alpha03
中的ViewTreeViewModelStoreOwner
和 SavedState1.1.0-alpha01
中的ViewTreeSavedStateRegistryOwner
(aosp/1297993、aosp/1300264)。
API 變更
TakePicture
合約現在會傳回表示成功的boolean
,而不是縮圖Bitmap
,因為在將圖片寫入提供的Uri
時,相機應用程式很少支援這種格式 (b/154302879)- 移除
ActivityResultLauncher
中的invoke()
擴充功能,以便明確使用launch()
更清楚地指示這些都是非同步作業。launch
的 Kotlin 擴充功能已新增至ActivityResultLauncher<Void>
和ActivityResultLauncher<Unit>
的androidx.activity.result
套件,這樣就無需在null
或Unit
中分別傳送,以鏡像先前已invoke()
的擴充功能的鏡像該行為。(aosp/1304674、aosp/1304675) setFlagsMask()
和setFlagsValues()
的IntentSenderRequest.Builder
方法已合併為單一setFlags()
方法 (aosp/1302111)
修正錯誤
- 透過
LifecycleOwner
註冊ActivityResultCallback
時,修正了在狀態達到STARTED
之前會觸發回呼的問題 (aosp/1309744)
行為變更
ActivityResultRegistry
現在會產生從0xFFFF
(而非0
) 開始的要求程式碼,避免在活動中使用startActivityForResult()
或requestPermissions()
時重疊 (aosp/1302324)
1.2.0-alpha04 版
2020 年 4 月 29 日
發布 androidx.activity:activity:1.2.0-alpha04
和 androidx.activity:activity-ktx:1.2.0-alpha04
。1.2.0-alpha04 版本包含以下修訂項目。
新功能
- 向 ActivityResult API 新增了可以呼叫 startIntentSenderForResult 的合約。(b/153007517)
API 變更
- 在這裡的
ComponentActivity
及 Fragment1.3.0-alpha04
中,prepareCall()
方法已重新命名為registerForActivityResult()
(aosp/1278717) GetContents
、OpenDocuments
和RequestPermissions
合約已分別重新命名為GetMultipleContents
、OpenMultipleDocuments
和RequestMultiplePermissions
。(aosp/1280161)ComponentActivity
現在會實作ActivityResultRegisteryOwner
介面。(aosp/1290888)- 已淘汰
ComponentActivity
上的startActivityForResult()
/onActivityResult()
和onRequestPermissionsResult()
API。請使用 Activity Result API。(b/154751887)
修正錯誤
- 使用
GetMultipleContents
和OpenMultipleDocuments
合約並選取單一項目時,現在會正確地向您的回呼傳回結果 (b/152941153)
1.2.0-alpha03 版
2020 年 4 月 1 日
發布 androidx.activity:activity:1.2.0-alpha03
和 androidx.activity:activity-ktx:1.2.0-alpha03
。1.2.0-alpha03 版包含此連結所列的修訂項目。
新功能
- 已將
TakeVideo
、PickContact
、GetContent
、GetContents
、OpenDocument
、OpenDocuments
、OpenDocumentTree
和CreateDocument
合約新增至ActivityResultContracts
提供的預先建構合約組 (aosp/1262482、aosp/1266916、aosp/1268960) - Activity Result API 現已支援透過選用的
ActivityOptionsCompat
啟動 Activity 取得結果 (b/151860054)
API 變更
TakePicture
合約現在接受標記出圖片應儲存位置的Uri
輸入。不接受任何輸入的舊合約已重新命名為TakePicturePreview
。(aosp/1262482)ActivityResultRegistry
上的registerActivityResultCallback()
方法已重新命名為register()
(aosp/1267621)ActivityResultLauncher
上的dispose()
方法已重新命名為unregister()
,且ActivityResultRegistry
上的unregisterResultCallback()
已移除 (aosp/1267621)ActivityResultContact
的createIntent()
方法現在採用Context
以及輸入內容以建立明確意圖。(aosp/1238800)ActivityResultContract
現在可以覆寫getSynchronousResult()
,無需呼叫startActivityForResult
即可傳遞結果。如果已授予所要求的權限,RequestPermission
和RequestPermissions
合約可利用這個方法正確傳遞「已授權」狀態 (b/151110799)- 由於
Intent
並非用於搭配startActivityForResult()
使用,之前可用的Dial
合約已移除 (aosp/1266916) - 許多不會擴充的 Activity Result API 現在都是
final
。這包括getActivityResultRegistry()
、prepareCall()
方法、除invoke()
以外的所有ActivityResultRegistry
方法,以及部分不支援選用附加項目的預設合約 (b/152439361)
修正錯誤
- 修正了
ActivityResultRegistry
中的NullPointerException
:在嘗試將結果傳遞給設定更改後尚未重新註冊的回呼時,ActivityResultRegistry
現在會保留這些待處理結果並在重新註冊回呼時傳遞 (b/152137004)
1.2.0-alpha02 版
2020 年 3 月 18 日
發布了 androidx.activity:activity:1.2.0-alpha02
和 androidx.activity:activity-ktx:1.2.0-alpha02
。1.2.0-alpha02 版包含此連結所列的修訂項目。
新功能
- ActivityResultRegistry:
ComponentActivity
現在提供ActivityResultRegistry
,讓您無需覆寫 Activity 或 Fragment 中的方法,即可處理startActivityForResult()
+onActivityResult()
以及requestPermissions()
+onRequestPermissionsResult()
流程,透過ActivityResultContract
提升類型安全,並提供測試這些流程的掛鉤。詳情請參閱最新的從 Activity 取得結果 (b/125158199)
1.2.0-alpha01 版
2020 年 3 月 4 日
發布 androidx.activity:activity:1.2.0-alpha01
和 androidx.activity:activity-ktx:1.2.0-alpha01
。1.2.0-alpha01 版包含此連結所列的修訂項目。
新功能
- 開始支援 Lifecycle
2.3.0-alpha01
中新增的ViewTreeLifecycleOwner.get(View)
API,以針對直接新增至 Activity 的任何檢視畫面傳回 Activity 做為LifecycleOwner
(aosp/1182955)
修正錯誤
- 修正了在舊版本平台上執行時,在 Activity
1.1.0
中出現的迴歸問題。在這些平台上,onBackPressed()
會由於android.app.FragmentManager
中的錯誤而導致IllegalStateException
(b/146290338)
1.1.0 版
1.1.0 版
2020 年 1 月 22 日
發布了 androidx.activity:activity:1.1.0
。1.1.0 版包含此連結所列的修訂項目。
自 1.0.0 版以來的重要異動
- Lifecycle ViewModel SavedState 整合:使用
by viewModels()
、ViewModelProvider
建構函式,或者將ViewModelProviders.of()
與ComponentActivity
或其子類別搭配使用時,SavedStateViewModelFactory
現在是預設使用的工廠。
1.1.0-rc03 版
2019 年 12 月 4 日
發布 androidx.activity:activity:1.1.0-rc03
和 androidx.activity:activity-ktx:1.1.0-rc03
。1.1.0-rc03 版包含此連結所列的修訂項目。
依附元件變更
- Activity 現在依附於 Lifecycle
2.2.0-rc03
和 Lifecycle ViewModel SavedState1.0.0-rc03
。
1.1.0-rc02 版
2019 年 11 月 7 日
發布 androidx.activity:activity:1.1.0-rc02
和 androidx.activity:activity-ktx:1.1.0-rc02
。1.1.0-rc02 版包含此連結所列的修訂項目。
依附元件變更
- Activity 現在依附於 Lifecycle
2.2.0-rc02
。
1.1.0-rc01 版
2019 年 10 月 23 日
發布 androidx.activity:activity:1.1.0-rc01
和 androidx.activity:activity-ktx:1.1.0-rc01
,且自 1.1.0-beta01
版以來皆無異動。1.1.0-rc01 版包含以下修訂項目。
1.1.0-beta01 版
2019 年 10 月 9 日
發布 androidx.activity:activity:1.1.0-beta01
和 androidx.activity:activity-ktx:1.1.0-beta01
。1.1.0-beta01 版包含此連結所列的修訂項目。
依附元件變更
- Activity 現在依附於 SavedState 1.0.0 穩定版。
1.1.0-alpha03 版
2019 年 9 月 5 日
發布 androidx.activity:activity:1.1.0-alpha03
和 androidx.activity:activity-ktx:1.1.0-alpha03
。您可以前往這裡查看這個版本包含的修訂項目。
新功能
- Activity 現在依附於 Core 1.1.0 穩定版。
修正錯誤
- Activity 現在依附於 Lifecycle
2.2.0-alpha04
。
1.1.0-alpha02 版
2019 年 8 月 7 日
發布 androidx.activity:activity:1.1.0-alpha02
和 androidx.activity:activity-ktx:1.1.0-alpha02
。您可以前往這裡查看這個版本包含的修訂項目。
新功能
SavedStateViewModelFactory
現在是使用by viewModels()
、ViewModelProvider
建構函式或將ViewModelProviders.of()
搭配ComponentActivity
使用時預設使用的工廠 (b/135716331)
1.1.0-alpha01 版
2019 年 7 月 2 日
發布 androidx.activity:activity:1.1.0-alpha01
和 androidx.activity:activity-ktx:1.1.0-alpha01
。您可以前往這裡查看這個版本包含的修訂項目。
新功能
activity
現在依附於 Lifecycle2.2.0-alpha02
。(aosp/1007817)activity-ktx
在lifecycle-runtime-ktx
中新增了依附元件;在使用activity-ktx
或依附於activity-ktx
的程式庫 (例如fragment-ktx
) 時,您不再需要明確將其加入依附元件中 (aosp/987162)。
1.0.0 版
1.0.0 版
2019 年 9 月 5 日
發布 androidx.activity:activity:1.0.0
和 androidx.activity:activity-ktx:1.0.0
。您可以前往這裡查看這個版本包含的修訂項目。
1.0.0 版的主要功能
- ComponentActivity:
ComponentActivity
用來當做 Fragment1.1.0
中FragmentActivity
的新基礎類別,並且擴展為 AppCompat1.1.0
中的AppCompatActivity
。 - activity-ktx:
activity-ktx
模組包含by viewModels
Kotlin 屬性擴充功能,用於存取 ViewModel。當您加入 Fragment1.1.0
的fragment-ktx
時,會自動加入這個模組。 - OnBackededDispatcher:您現在可以透過任何
LifecycleOwner
(例如片段) 註冊OnBackPressedCallback
以攔截系統返回按鈕事件來做為可組合替代程式碼,用來覆寫onBackPressed()
。含有接收器版本addCallback
的 lambda 已加入activity-ktx
。詳情請參閱提供自訂的返回導覽功能說明文件。 - onRetainCustomNonConfigurationInstance 淘汰:已淘汰
onRetainCustomNonConfigurationInstance()
和相關的getLastCustomNonConfigurationInstance()
API。強烈建議您使用 ViewModel 儲存非設定狀態,因為這可以提供適用於任何ViewModelStoreOwner
的可組合解決方案。ViewModelStoreOwner 可以明確指示對保留對象的擁有權,並提供onCleared()
回呼,以在最終刪除活動時清理資源。
1.0.0-rc01 版
2019 年 7 月 2 日
發布 androidx.activity:activity:1.0.0-rc01
和 androidx.activity:activity-ktx:1.0.0-rc01
,且自 1.0.0-beta01
版以來皆無異動。您可以前往這裡查看這個版本包含的修訂項目。
1.0.0-beta01 版
2019 年 6 月 5 日
發布 androidx.activity::activity:1.0.0-beta01
和 androidx.activity:activity-ktx:1.0.0-beta01
,且自 1.0.0-alpha08
版以來皆無異動。您可以前往這裡查看這個版本包含的修訂項目。
1.0.0-alpha08 版
2019 年 5 月 7 日
發布 androidx.activity:activity:1.0.0-alpha08
和 androidx.activity:activity-ktx:1.0.0-alpha08
。您可以前往這裡查看這個版本包含的修訂項目。
API 變更
- 破壞性變更:已移除
ComponentActivity
上先前淘汰的addOnBackPressedCallback
和removeOnBackPressedCallback
方法 (aosp/953857)。 OnBackPressedCallback
的setEnabled()
和isEnabled()
方法現為最終版 (b/131416833)OnBackPressedCallback
的remove()
方法現在為最終版 (aosp/952720)。OnBackPressedDispatcher
現在有公開建構函式,您可以建構自己的測試用執行個體等等 (aosp/953431)。ComponentActivity
的onBackPressed()
現已明確標記為@MainThread
(aosp/952721)
修正錯誤
- 修正了在透過
LifecycleOwner
新增OnBackPressedCalback
的handleOnBackPressed()
方法中呼叫remove()
時出現的ConcurrentModificationException
(b/131765095)
1.0.0-alpha07 版
2019 年 4 月 25 日
發布 androidx.activity:activity:1.0.0-alpha07
和 androidx.activity:activity-ktx:1.0.0-alpha07
。您可以前往這裡查看這個版本包含的修訂項目。
API 變更
在這個版本中,onBackPressed()
的處理方式有重大變更。詳情請參閱「更新的自訂返回功能說明文件」。
OnBackPressedCallback
和OnBackPressedDispatcher
的方法已標記為@MainThread
(aosp/943813)handleOnBackPressed()
方法不再傳回boolean
。OnBackPressedCallback
現在變成是一個可以啟用或停用的抽象類別,只有當新的isEnabled()
方法傳回「是」的時候才會呼叫handleOnBackPressed()
。在這種情況下,您必須處理返回按鈕。(aosp/944518)OnBackPressedDispatcher
的addCallback
方法不再傳回Cancellable
執行個體。OnBackPressedCallback
現在包含可執行此功能的remove()
方法,因此您可以在handleOnBackPressed()
期間呼叫remove()
(aosp/944519) (aosp/946316)activity-ktx
現在包含addCallback
的接收器限定範圍回呼,可接受實作handleOnBackPressed()
的 lamdba,且可存取isEnabled
和remove()
(aosp/944520)
1.0.0-alpha06 版
2019 年 4 月 3 日
發布 androidx.activity:activity:1.0.0-alpha06
和 androidx.activity:activity-ktx:1.0.0-alpha06
。您可以前往這裡查看這個版本包含的修訂項目。
API 變更
- ComponentActivity 現已包含第二層建構函式,其中採用
@LayoutRes int
取代將 AppCompatActivity 類別以@ContentView
註解的先前行為,這個方法同時適用於應用程式和程式庫模組 (b/128352521) - 已淘汰 ComponentActivity 中的
OnBackPressedCallback
相關 API,並改用新的OnBackPressedDispatcher
,可透過getOnBackPressedDispatcher()
擷取 (aosp/922523) - 將
OnBackPressedCallback
新增至OnBackPressedDispatcher
的方法現在會傳回Cancellable
物件,如此可在不使用OnBackPressedDispatcher
明確參照的情況下移除回呼 (aosp/922523) - 現在,在透過相關聯的
LifecycleOwner
新增OnBackPressedCallback
時,當生命週期開始和停止時,將會分別導致新增和移除OnBackPressedCallback
。(aosp/922523)
1.0.0-alpha05 版
2019 年 3 月 13 日
發布 androidx.activity:activity:1.0.0-alpha05
和 androidx.activity:activity-ktx:1.0.0-alpha05
。如需查看這個版本所包含修訂項目的完整清單,請按這裡。
新功能
- 已對
@ContentView
註解查詢加入快取處理。(b/123709449)
1.0.0-alpha04 版
2019 年 1 月 30 日
發布 androidx.activity:activity 1.0.0-alpha04
和 androidx.activity:activity-ktx 1.0.0-alpha04
。
新功能
- 現已支援
@ContentView
類別註解,可讓您指示應加載哪個版面配置 XML 檔案以代替使用setContentView()
。(aosp/837619)。
API 變更
- 新增了附註,說明不應覆寫
getViewModelStore()
,並且在日後發布的版本中成為定案。如果您目前正在覆寫這個方法,請提交功能要求。(aosp/837619)
修正錯誤
activity
模組現在依附於 ViewModel 2.1.0-alpha02 版,以與activity-ktx
模組的依附元件保持一致。
1.0.0-alpha03 版
2018 年 12 月 17 日
發布了 androidx.activity 1.0.0-alpha03
。
新功能
- ComponentActivity 現在會實作
BundleSavedStateRegistryOwner
,並依附於 SavedState 程式庫新版本 [aosp/815133] - ComponentActivity 目前處理 Android 架構問題,該問題會導致 InputMethodManager 洩漏上次聚焦的檢視畫面 [b/37122102]
1.0.0-alpha02 版
2018 年 12 月 3 日
API 變更
- 新增附註,說明不應覆寫
getLifecycle()
,並會在日後發布的版本中將其設為final
。如果您目前正在覆寫這個方法,請提交功能要求 (aosp/815834)
1.0.0-alpha01 版
2018 年 11 月 5 日
androidx.activity 1.0.0-alpha01
導入 ComponentActivity
,這是現有 FragmentActivity
和 AppCompatActivity
的新基礎類別。
新功能
- 您現在無需覆寫活動中的方法,即可透過
addOnBackPressedCallback
註冊OnBackPressedCallback
以接收onBackPressed()
回呼。 - 新增
by viewModels()
Kotlin 屬性委派項目,以從ComponentActivity
擷取ViewModel
。 onStop()
中的待處理輸入事件 (例如點擊) 現在已取消。
API 變更
LifecycleOwner
和ViewModelStoreOwner
的實作已從FragmentActivity
移至ComponentActivity
。- 淘汰了
onRetainCustomNonConfigurationInstance
。請使用ViewModel
儲存需要在設定變更後繼續留存的物件。