活動

存取以 Activity 為基礎建構的可組合 API。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2024 年 4 月 3 日 1.8.2 1.9.0-rc01 - -

宣告依附元件

如要新增 Activity 的依附元件,必須將 Google Maven 存放區新增至您的專案。詳情請參閱「Google 的 Maven 存放區」一節。

在應用程式或模組的 build.gradle 檔案中,新增所需構件的依附元件:

Groovy

dependencies {
    def activity_version = "1.8.2"

    // Java language implementation
    implementation "androidx.activity:activity:$activity_version"
    // Kotlin
    implementation "androidx.activity:activity-ktx:$activity_version"
}

Kotlin

dependencies {
    val activity_version = "1.8.2"

    // Java language implementation
    implementation("androidx.activity:activity:$activity_version")
    // Kotlin
    implementation("androidx.activity:activity-ktx:$activity_version")
}

如要進一步瞭解依附元件,請參閱「新增建構依附元件」一文。

意見回饋

您的意見可協助我們改善 Jetpack。如果您發現新問題,或是有改進這個程式庫的建議,請告訴我們。回報新問題前,請先查看這個程式庫的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

版本 1.9

1.9.0-rc01 版本

2024 年 4 月 3 日

發布 androidx.activity:activity:1.9.0-rc01androidx.activity:activity-compose:1.9.0-rc01androidx.activity:activity-ktx:1.9.0-rc01。1.9.0-rc01 版包含這些修訂版本

依附元件更新

1.9.0-beta01 版本

2024 年 3 月 20 日

發布 androidx.activity:activity:1.9.0-beta01androidx.activity:activity-compose:1.9.0-beta01androidx.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-alpha03androidx.activity:activity-compose:1.9.0-alpha03androidx.activity:activity-ktx:1.9.0-alpha031.9.0-alpha03 版包含此連結所列的修訂項目。

Lint 警告

修正錯誤

  • 如果系統在執行預測返回手勢時啟動了返回事件,則系統會取消目前執行中的預測返回手勢,並接替新的返回事件開始建立新的預測返回手勢。(I3482e)。
  • 修正了首次從背景執行緒從 ComponentActivity 存取 onBackPressedDispatcher 時發生的異常終止問題。現在您可以在任何執行緒上安全地存取 onBackPressedDispatcher。(I79955)。

1.9.0-alpha02 版

2024 年 1 月 24 日

發布 androidx.activity:activity:1.9.0-alpha02androidx.activity:activity-compose:1.9.0-alpha02androidx.activity:activity-ktx:1.9.0-alpha021.9.0-alpha02 版包含此連結所列的修訂項目。

Kotlin 轉換

  • 已改寫 Kotlin 內的 ActivityResultRegistry。這可確保在傳遞至 register 的合約中,泛型的「是否可為空值」屬性正確傳遞給傳回給您的 ActivityResultLauncher。(I121f0)。
  • 已改寫 Kotlin 內的 ActivityResult。支援解構為 resultCodedata 欄位的 ActivityResult Kotlin 擴充功能已從 activity-ktx 移至 activity。(I0565a)。
  • ComponentActivitytrackPipAnimationHintViewby viewModels() 的 Kotlin 擴充功能已從 activity-ktx 移至 activityactivity-ktx 構件現在沒有任何內容。(I0a444)。

修正錯誤

  • enableEdgeToEdge API 現在會針對任何螢幕凹口進行繪製。(a3644bb/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-alpha01androidx.activity:activity-compose:1.9.0-alpha01androidx.activity:activity-ktx:1.9.0-alpha011.9.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • ComponentActivity 現已實作 OnUserLeaveHintProvider,讓元件可為 onUserLeaveHint 事件發出回呼。(I54892)。

API 變更

  • 已改寫 Kotlin 內的 ComponentActivity。(I14f31)。
  • 已改寫 Kotlin 內的 ActivityResultCaller。(Ib02e4)。
  • 已改寫 Kotlin 內的 ActivityResultLauncher。在此轉換中,getContract 方法現在是抽象的 Kotlin 屬性。這是與二進位檔相容的變更,但如果 ActivityResultLauncher 的實作是以 Kotlin 編寫,原始碼就會失效。(Id4615)。
  • PickVisualMediaRequest 現在與 PickVisualMedia Activity Result 合約使用相同的最低 API 級別 19。(Id6e21)。

依附元件更新

1.8 版

1.8.2 版

2023 年 12 月 13 日

發布 androidx.activity:activity:1.8.2androidx.activity:activity-compose:1.8.2androidx.activity:activity-ktx:1.8.21.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.1androidx.activity:activity-compose:1.8.1androidx.activity:activity-ktx:1.8.11.8.1 版包含此連結所列的修訂項目。

修正錯誤

  • 現在,即使在處理返回手勢時新增了 OnBackPressedCallbackOnBackPressedDispatcher 仍會繼續分派至正確的 OnBackPressedCallback(Id0ff6)。

1.8.0 版

2023 年 10 月 4 日

發布 androidx.activity:activity:1.8.0androidx.activity:activity-compose:1.8.0androidx.activity:activity-ktx:1.8.01.8.0 版包含此連結所列的修訂項目。

自 1.7.0 版以來的重要變更

  • 預測返回 - OnBackPressedCallback 現在提供新的預測返回回呼,可處理返回手勢的啟動動作、整個手勢的進度,以及先前在執行返回手勢時、先前的 handleOnBackPressed() 回呼以外的取消返回手勢。PredictiveBackHandler 可組合函式也能用於處理 Activity Compose 中的預測返回手勢事件。這可提供 BackEventCompat 物件的 Flow ,而您必須在您提供的暫停 lamba 中收集:
  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-rc01androidx.activity:activity-compose:1.8.0-rc01androidx.activity:activity-ktx:1.8.0-rc011.8.0-rc01 版包含以下修訂項目。

1.8.0-beta01 版

2023 年 9 月 6 日

發布 androidx.activity:activity:1.8.0-beta01androidx.activity:activity-compose:1.8.0-beta01androidx.activity:activity-ktx:1.8.0-beta011.8.0-beta01 版包含以下修訂項目。

說明文件改善

  • 改善 BackEventCompat 的說明文件。(aosp/2722254)。

1.8.0-alpha07 版

2023 年 8 月 23 日

發布 androidx.activity:activity:1.8.0-alpha07androidx.activity:activity-compose:1.8.0-alpha07androidx.activity:activity-ktx:1.8.0-alpha071.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 規則,系統也會透過 Lint 規則提供編譯時間警告,確保 Flow 呼叫 collect()。(Id2773b/294884345)

  • ComponentActivity 中的 onBackPressedDispatcher 現在會延遲初始化,因此只在需要時建立。(I0bf8e)。

修正錯誤

  • ComponentActivity 收到 onBackPressed() 回呼,且 Activity 已經為 DESTROYED 時,Android 13 不會再顯示 NPE(Idb055b/291869278)
  • 移除了實驗性 isAtLeastU() API 的用法 (Ie9117b/289269026)

1.8.0-alpha06 版

2023 年 6 月 21 日

發布 androidx.activity:activity:1.8.0-alpha06androidx.activity:activity-compose:1.8.0-alpha06androidx.activity:activity-ktx:1.8.0-alpha061.8.0-alpha06 版包含此連結所列的修訂項目。

新功能

  • OnBackPressedDispatcher 現在可正確取消在預測返回手勢期間移除的任何回呼。(I3f90f)。

API 變更

  • SystemBarStyle.auto 傳遞至 enableEdgeToEdge API 時,您現在可以覆寫 detectDarkMode lambda 參數,提供用於偵測夜間模式的自訂邏輯。(aosp/2546393b/278263793)

1.8.0-alpha05 版

2023 年 6 月 7 日

發布 androidx.activity:activity:1.8.0-alpha05androidx.activity:activity-compose:1.8.0-alpha05androidx.activity:activity-ktx:1.8.0-alpha05。這個版本是以內部分支版本開發。

API 變更

  • Activity 現在提供 BackEventCompat 類別,做為 BackEvent 的回溯相容版本,該版本與架構 BackEvent 類別分離。
  • 破壞性變更:OnBackPressedCallbackhandleOnBackStartedhandleOnBackProgressed 方法現在會收到 androidx.activity.BackEventCompat 執行個體,而非架構 android.window.BackEvent 類別。此外,OnBackPressedDispatcher 中的對等 @VisibleForTesting API 也已更新。
  • OnBackPressedDispatcher 的建構函式現在接受選用的 Consumer<Boolean> 執行個體,讓調度工具擁有者只要已啟用的回呼數量從零變為非零 (反之亦然) 時,就會收到回呼。

修正錯誤

1.8.0-alpha04 版

2023 年 5 月 10 日

發布 androidx.activity:activity:1.8.0-alpha04androidx.activity:activity-compose:1.8.0-alpha04androidx.activity:activity-ktx:1.8.0-alpha04。這個版本從內部分支版本中釋出。

修正錯誤

1.8.0-alpha03 版

2023 年 4 月 12 日

發布 androidx.activity:activity:1.8.0-alpha03androidx.activity:activity-compose:1.8.0-alpha03androidx.activity:activity-ktx:1.8.0-alpha03。這個版本從內部分支版本中釋出。

新功能

  • 新增了 ComponentActivity.setUpEdgeToEdge(),以便以回溯相容的方式輕鬆設定無邊框顯示螢幕。

API 變更

  • 現已淘汰 ComponentActivity.onBackPressed(),並改用處理返回的 API。開發人員現在應使用 OnBackPressedDispatcher,而不是覆寫這個方法。(Ibce2fb/271596918)
  • ComponentDialogComponentActivity 現在包含公用 API initViewTreeOwners(),可在設定內容檢視畫面之前初始化所有檢視畫面樹狀結構擁有者。(Ibdce0b/261314581)

修正錯誤

  • 修正 Fragment 誤將 MenuHosts 無效,且導致 Activity 中其他選單出現非預期行為的問題。(I9404eb/244336571)

其他變更

  • ActivityResultRegister 現在使用 Kotlin Random,而不是 Java。(I4d98fb/272096025)

1.8.0-alpha02 版

2023 年 3 月 8 日

發布 androidx.activity:activity:1.8.0-alpha02androidx.activity:activity-compose:1.8.0-alpha02androidx.activity:activity-ktx:1.8.0-alpha02。以內部分支版本開發。

依附元件更新

1.8.0-alpha01 版

2023 年 2 月 8 日

發布 androidx.activity:activity:1.8.0-alpha01androidx.activity:activity-compose:1.8.0-alpha01androidx.activity:activity-ktx:1.8.0-alpha01。此版本是以內部分支版本為基礎。

新功能

  • OnBackPressedCallback 類別現已納入新的預測返回進度回呼,用於處理返回手勢的啟動動作、整個手勢的進度,以及先前在執行返回手勢時、所用 handleOnBackPressed() 回呼以外的取消返回手勢。

1.7 版

1.7.2 版

2023 年 5 月 24 日

發布 androidx.activity:activity:1.7.2androidx.activity:activity-compose:1.7.2androidx.activity:activity-ktx:1.7.21.7.2 版包含此連結所列的修訂項目。

修正錯誤

  • 修正在呼叫 report 前離開畫面時發生的 ReportDrawn 異常終止問題。(Ic46f1b/260506820)

1.7.1 版

2023 年 4 月 19 日

發布 androidx.activity:activity:1.7.1androidx.activity:activity-compose:1.7.1androidx.activity:activity-ktx:1.7.11.7.1 版包含此連結所列的修訂項目。

修正錯誤

  • ComponentActivityActivityScenario 搭配使用時,ReportFullyDrawExecuter 不會再外洩。(Id2ff2b/277434271)。

1.7.0 版

2023 年 3 月 22 日

發布 androidx.activity:activity:1.7.0androidx.activity:activity-compose:1.7.0androidx.activity:activity-ktx:1.7.01.7.0 版包含此連結所列的修訂項目。

自 1.6.0 版以來的重要變更

  • 更新 PickVisualMediaPickMultipleVisualMedia 中的相片挑選工具活動合約,針對 MediaStore.ACTION_PICK_IMAGES 無法使用時提供額外的備用方案。當 MediaStore.ACTION_PICK_IMAGES 無法使用時,原始設備製造商 (OEM) 和系統應用程式 (例如 Google Play 服務) 可透過實作備用動作,在更多 Android 裝置和 API 級別上提供一致的相片挑選工具體驗。如果可以,相片挑選工具就會使用這個備用項,前提是會改回使用 Intent.ACTION_OPEN_DOCUMENT,後者仍支援所有 API 19 以上裝置。
  • ComponentDialog 現在會實作 SavedStateRegistryOwner,而且可存取本身的 SavedStateRegistry,並為 ViewTree 設定 SavedStateRegistryOwner。由於 ComponentDialog 符合透過 ViewTree API 要求附加至視窗的 LifecycleOwnerSavedStateRegistryOwner,因此目前可在此類別中使用 Jetpack Compose
  • IntentSenderRequest.Builder.setFlags() 現在可讓您從 Intent 設定多個標記,而不只是單一標記。

Kotlin 轉換

許多 Activity 類別已轉換為 Kotlin。所有轉換的類別仍會保留與先前版本的二進位檔相容性。針對以 Kotlin 編寫的類別,以下類別具有與來源不相容的變更:ActivityResultRegistryOwnerOnBackPressedDispatcherOwner

下表提供新版「活動」的來源轉換:

活動 1.5 活動 1.6
override fun getActivityResultRegistry() = activityResultRegistry override val activityResultRegistry = activityResultRegistry
override fun getOnBackPressedDispatcher() = onBackPressedDispatcher override val onBackPressedDispatcher = onBackPressedDispatcher

這些類別也已轉換成 Kotlin,但仍保持與原始碼相容:ContextAwareContextAwareHelperOnContextAvailableListenerIntentSenderRequestOnBackPressedDispatcher

FullyDrawnReporter API

ComponentActivity 現在提供 FullyDrawnReporter 執行個體,讓多個元件可以在為互動準備就緒時回報。ComponentActivity 會等待所有元件完成,再代表您呼叫 reportFullyDrawn()。這些 API 會為您處理時間需求,不需要作為 onDraw 呼叫的一部分進行呼叫。

建議您啟用下列 API:

  • 在啟動完成後為 Android 執行階段進行訊號,以確保在多頁框啟動序列期間執行的所有程式碼都已納入,並優先進行背景編譯。
  • 應該將應用程式的 Macrobenchmark 和 Play Vitals 列入考量,據此評估應用程式的啟動指標是否完整繪製,以便追蹤效能。

已新增三個 Activity Compose API,方便您使用個別可組合項中的 FullyDrawnReporter

  • ReportDrawn 表示可組合項可立即準備好進行互動。
  • ReportDrawnWhen 述詞 (例如 list.count > 0) 表示可組合元件何時可互動。
  • ReportDrawnAfter 採用暫停方法,完成後就會表示您已為互動準備就緒。

依附元件更新

1.7.0-rc01 版

2023 年 3 月 8 日

發布 androidx.activity:activity:1.7.0-rc01androidx.activity:activity-compose:1.7.0-rc01androidx.activity:activity-ktx:1.7.0-rc011.7.0-rc01 版包含以下修訂項目。

依附元件更新

1.7.0-beta02 版

2023 年 2 月 22 日

發布 androidx.activity:activity:1.7.0-beta02androidx.activity:activity-compose:1.7.0-beta02androidx.activity:activity-ktx:1.7.0-beta021.7.0-beta02 版包含以下修訂項目。

API 變更

  • PickVisualMediaPickMultipleVisualMedia 合約使用的動作和額外功能,做為 MediaStore.ACTION_PICK_IMAGES 無法使用時的備用方案,現在公開常數可為原始設備製造商 (OEM) 和系統應用程式提供 API 穩定性,以便提供一致的相片挑選工具體驗。且目前僅限系統應用程式實作此備用項。(Icd320)。

1.7.0-beta01 版

2023 年 2 月 8 日

發布 androidx.activity:activity:1.7.0-beta01androidx.activity:activity-compose:1.7.0-beta01androidx.activity:activity-ktx:1.7.0-beta011.7.0-beta01 版包含此連結所列的修訂項目。

新功能

  • IntentSenderRequest.Builder.setFlags() 現在可讓您從 Intent 設定多個標記,而不只是單一標記。(Iac04c)。

修正錯誤

  • PickVisualMedia 的備用方案可在架構相片選擇器無法使用時派上用場,現在也會妥善限定作業程序僅處理裝置系統映像檔中安裝的應用程式。(If8ae6)。

Kotlin 轉換

  • ActivityResultRegistryOwner 現在以 Kotlin 編寫。對以 Kotlin 編寫的類別而言,這項變更具有來源不相容性,因此您現在必須覆寫 activityResultRegistry 屬性,而不是導入先前的 getActivityResultRegistry() 函式。(I0b00e)。
  • OnBackPressedDispatcherOwner 現在以 Kotlin 編寫。對以 Kotlin 編寫的類別而言,這項變更具有來源不相容性,因此您現在必須覆寫 onBackPressedDispatcher 屬性,而不是導入先前的 getOnBackPressedDispatcher 函式。(Ia277d)。
  • ContextAwareContextAwareHelperOnContextAvailableListenerIntentSenderRequestOnBackPressedDispatcher 現在是以 Kotlin 編寫。(I1a73eIada92aosp/2410754I18ac7b/257291701)

1.7.0-alpha04 版

2023 年 1 月 25 日

發布 androidx.activity:activity:1.7.0-alpha04androidx.activity:activity-compose:1.7.0-alpha04androidx.activity:activity-ktx:1.7.0-alpha041.7.0-alpha04 版包含此連結所列的修訂項目

新功能

  • PickVisualMediaPickMultipleVisualMedia 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-alpha03androidx.activity:activity-compose:1.7.0-alpha03androidx.activity:activity-ktx:1.7.0-alpha031.7.0-alpha03 版包含此連結所列的修訂項目。

新功能

  • ComponentDialog 類別現在會實作 SavedStateRegistryOwner,而且可存取本身的 SavedStateRegistry,並為 ViewTree 設定 SavedStateRegistryOwner。由於 ComponentDialog 符合透過 ViewTree API 要求附加至視窗的 LifecycleOwnerSavedStateRegistryOwner,因此目前可在此類別中使用 Jetpack Compose (Idca17I73468b/261162296)。

API 變更

  • 新增 ReportDrawn 可組合項,這會立即將活動標示為準備好呼叫 reportFullyDrawn (Ic5b14b/259687964)。

Kotlin 轉換

  • ActvitiyResultCallbackOnBackPressedCallback 類別皆已轉換為 Kotlin,同時保持來源和二進位檔相容性 (Ifc5e5Ide1b0b/257291701)。

1.7.0-alpha02 版

2022 年 10 月 24 日

發布了 androidx.activity:activity:1.7.0-alpha02androidx.activity:activity-compose:1.7.0-alpha02androidx.activity:activity-ktx:1.7.0-alpha021.7.0-alpha02 版包含此連結所列的修訂項目。

修正錯誤

  • Activity 1.6.1 起修正以下問題:使用 maxItems 預設值時,Android R 裝置上不會啟動 PickMultipleVisualMedia Activity Result 合約 (Ie2776b/249182130)。

1.7.0-alpha01 版

2022 年 10 月 5 日

發布了 androidx.activity:activity:1.7.0-alpha01androidx.activity:activity-compose:1.7.0-alpha01androidx.activity:activity-ktx:1.7.0-alpha011.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.1androidx.activity:activity-compose:1.6.1androidx.activity:activity-ktx:1.6.11.6.1 版包含此連結所列的修訂項目。

修正錯誤

  • 修正了以下問題:使用 maxItems 的預設值時,無法在 Android R 裝置上啟動 PickMultipleVisualMedia Activity Result 合約 (Ie2776b/249182130)

1.6.0 版

1.6.0 版

2022 年 9 月 21 日

發布 androidx.activity:activity:1.6.0androidx.activity:activity-compose:1.6.0androidx.activity:activity-ktx:1.6.01.6.0 版包含此連結所列的修訂項目。

自 1.5.0 版之後的重要變更

  • 新增了 ActivityResultContracts.PickVisualMediaActivityResultContracts.PickMultipleVisualMedia,以便提供具有回溯相容性的合約,依照此合約,系統會在相片挑選工具可用時使用 MediaStore.ACTION_PICK_IMAGES,而在相片挑選工具無法使用時則使用 Intent.ACTION_OPEN_DOCUMENT
  • 將 Android 13 中的 OnBackInvokedCallback 整合至 ComponentActivityComponentDialog 提供的 OnBackPressedDispatchers。這可確保在啟用預測返回手勢時,OnBackPressedDispatcher 上建立的所有 API 都能正常運作。

1.6.0-rc02 版

2022 年 9 月 7 日

發布了 androidx.activity:activity:1.6.0-rc02androidx.activity:activity-compose:1.6.0-rc02androidx.activity:activity-ktx:1.6.0-rc021.6.0-rc02 版包含此連結所列的修訂項目。

修正錯誤

  • 註冊 OnBackInvokedCallback 時,OnBackPressedDispatcher 現在會使用 PRIORITY_DEFAULT 而不是 PRIORITY_OVERLAY (I3901f)。
  • 擴充 ComponentActivity 的類別現在一律會分派兩個 onMultiWindowModeChanged() 回呼 (Ic4d85)。
  • 如果 launch 呼叫擲回任何 Exception,且註冊的回呼沒有 LifecycleOwnerActivityResultRegistry 不會再傳回結果給 ActivityResultCallback (Ia7ff7b/238350794)。
  • ComponentActivity 現在可以正確分派選單呼叫,不必呼叫活動中的超級函式 (Ie33c5b/238057118)

依附元件更新

1.6.0-rc01 版

2022 年 8 月 24 日

發布 androidx.activity:activity:1.6.0-rc01androidx.activity:activity-compose:1.6.0-rc01androidx.activity:activity-ktx:1.6.0-rc011.6.0-rc01 版包含以下修訂項目。

修正錯誤

  • 使用 33 以下的 SDK 版本時,初始化 OnBackPressedDispatcher 不會再造成 ClassVerificationError (Ic32e1)。
  • 如果類別覆寫 ComponentActivityonPictureInPictureModeChanged() 回呼,現在一律會分派回呼 (Ib7fdb)。

1.6.0-beta01 版

2022 年 8 月 10 日

發布了 androidx.activity:activity:1.6.0-beta01androidx.activity:activity-compose:1.6.0-beta01androidx.activity:activity-ktx:1.6.0-beta011.6.0-beta01 版包含此連結所列的修訂項目。

API 變更

  • 每當傳遞 null 時都會導致當機,因此以 @NonNull 標記 ComponentActivity 已淘汰的 startActivityForResultstartIntentSenderForResult 方法 (Id2a25b/231476082)。

修正錯誤

  • Activity 1.5.1 起︰當 launch 呼叫擲回任何 Exception 且註冊的回呼沒有 LifecycleOwner 時,ActivityResultRegistry 不會再傳回結果給 ActivityResultCallback (Ia7ff7b/238350794)。
  • Activity 1.5.1 起︰ComponentActivity 現在可正確分派選單呼叫給 onPrepareOptionMenu()onCreateOptionsMenu()onOptionsItemSelected() 覆寫,而無須呼叫超級函式 (Ie33c5b/238057118)。

依附元件更新

1.6.0-alpha05 版

2022 年 6 月 15 日

發布 androidx.activity:activity:1.6.0-alpha05androidx.activity:activity-compose:1.6.0-alpha05androidx.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-alpha04androidx.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-alpha03androidx.activity:activity-compose:1.6.0-alpha03androidx.activity:activity-ktx:1.6.0-alpha03

  • 注意:這個版本只會針對 Android 13 開發人員 Beta 版 1 SDK 進行編譯。

新功能

  • 新增了 ActivityResultContracts.PickVisualMediaActivityResultContracts.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-alpha01androidx.activity:activity-compose:1.6.0-alpha01androidx.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.1androidx.activity:activity-compose:1.5.1androidx.activity:activity-ktx:1.5.11.5.1 版包含此連結所列的修訂項目。

修正錯誤

  • 如果 launch() 呼叫擲回任何 Exception,且註冊的回呼沒有 LifecycleOwnerActivityResultRegistry 不會再傳回結果給 ActivityResultCallback (Ia7ff7b/238350794)。

  • ComponentActivity 現在可正確地將選單呼叫分派到 onPrepareOptionMenu()onCreateOptionsMenu()onOptionsItemSelected() 覆寫,不必呼叫超級函式 (Ie33c5b/238057118)。

依附元件更新

1.5.0 版

1.5.0 版

2022 年 6 月 29 日

發布 androidx.activity:activity:1.5.0androidx.activity:activity-compose:1.5.0androidx.activity:activity-ktx:1.5.01.5.0 版包含此連結所列的修訂項目。

自 1.4.0 版以來的重要異動

  • ComponentDialog - ComponentDialogDialog 的子類別,其中包含在對話方塊出現後按下系統返回按鈕時呼叫的 OnBackPressedDispatcher。重要的是,這個子類別還設定了 ViewTreeOnBackPressedDispatcherOwner,允許檢視畫面以一般方式擷取正確的調度程式,無論其存在於 ComponentActivityComponentDialog中。
  • 回呼介面 - ComponentActivity 現在可實作一組模組化回呼介面,可用於取代 Activity 回呼。這些介面包括:OnNewIntentProviderOnConfigurationChangedProviderOnTrimMemoryProviderOnPictureInPictureModeChangedProviderOnMultiWindowModeChangedProvider
  • CreationExtras 整合 - ComponentActivity 現在可透過 Lifecycle 2.5.0CreationExtras 提供無狀態 ViewModelProvider.Factory

其他變更

  • ActivityResultContracts.CreateDocument 的無參數建構函式已淘汰,取而代之的是採用具體 MIME 類型 (例如 「image/png」) 的新建構函數,如 Intent.ACTION_CREATE_DOCUMENT 所要求。

1.5.0-rc01 版

2022 年 5 月 11 日

發布 androidx.activity:activity:1.5.0-rc01androidx.activity:activity-compose:1.5.0-rc01androidx.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-beta01androidx.activity:activity-compose:1.5.0-beta01androidx.activity:activity-ktx:1.5.0-beta011.5.0-beta01 版包含此連結所列的修訂項目。

依附元件更新

1.5.0-alpha05 版

2022 年 4 月 6 日

發布了 androidx.activity:activity:1.5.0-alpha05androidx.activity:activity-compose:1.5.0-alpha05androidx.activity:activity-ktx:1.5.0-alpha051.5.0-alpha05 版包含以下修訂項目。

修正錯誤

  • ComponentActivityonPanelClosed() 現在也會呼叫超級 onPanelClosed(),並修正無法呼叫 onContextMenuClosed 方法的問題。(Ib6f77)

1.5.0-alpha04 版

2022 年 3 月 23 日

發布 androidx.activity:activity:1.5.0-alpha04androidx.activity:activity-compose:1.5.0-alpha04androidx.activity:activity-ktx:1.5.0-alpha041.5.0-alpha04 版包含此連結所列的修訂項目

修正錯誤

  • SavedStateViewFactory 現在支援使用 CreationExtras (即使已透過 SavedStateRegistryOwner 初始化)。如果提供額外項目,系統將忽略初始化的引數 (I6c43bb/224844583)。

1.5.0-alpha03 版

2022 年 2 月 23 日

發布了 androidx.activity:activity:1.5.0-alpha03androidx.activity:activity-compose:1.5.0-alpha03androidx.activity:activity-ktx:1.5.0-alpha031.5.0-alpha03 版包含此連結所列的修訂項目。

API 變更

  • 您現在可以將 CreationExtras 傳遞至 activity by viewModels() 函式 (I6a3e6b/217600303)

1.5.0-alpha02 版

2022 年 2 月 9 日

發布 androidx.activity:activity:1.5.0-alpha02androidx.activity:activity-compose:1.5.0-alpha02androidx.activity:activity-ktx:1.5.0-alpha021.5.0-alpha02 版包含此連結所列的修訂項目。

新功能

  • ComponentActivity 現在會實作 OnPictureInPictureModeChangedProvider 介面,讓任何元件都可接收子母畫面模式變更事件。(I9f567)
  • ComponentActivity 現在會實作 OnMultiWindowModeChangedProvider 介面,讓任何元件都可接收多視窗模式變更事件。(I62d91)

1.5.0-alpha01 版

2022 年 1 月 26 日

發布 androidx.activity:activity:1.5.0-alpha01androidx.activity:activity-compose:1.5.0-alpha01androidx.activity:activity-ktx:1.5.0-alpha011.5.0-alpha01 版包含此連結所列的修訂項目。

新功能

  • ComponentActivity 現已整合 ViewModel CreationExtras,後者為自 Lifecycle 2.5.0-alpha01 起引入的概念 (Ie7e00b/207012584)。
  • 新增 ComponentDialog,這是 Dialog 的子類別,其中包含在對話方塊出現後按下系統返回按鈕時呼叫的 OnBackPressedDispatcher。重要的是,這個子類別還設定了 ViewTreeOnBackPressedDispatcherOwner,允許 View 以一般方式擷取正確的調度程式,無論其存在於 ComponentActivityComponentDialog中。(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 的回呼,以 ComponentActivityinit 部分新增) 存取 ViewModel 時會發生異常終止情形(Ife83f)。

1.4.0 版

1.4.0 版

2021 年 10 月 27 日

發布 androidx.activity:activity:1.4.0androidx.activity:activity-compose:1.4.0androidx.activity:activity-ktx:1.4.01.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-rc01androidx.activity:activity-compose:1.4.0-rc01androidx.activity:activity-ktx:1.4.0-rc011.4.0-rc01 版包含此連結所列的修訂項目。

修正錯誤

  • launch 呼叫擲回任何 Exception 時,ActivityResultRegistry 不會再傳回結果給 ActivityResultCallback (If4f91b/200845664)。

1.4.0-beta01 版

2021 年 9 月 29 日

發布 androidx.activity:activity:1.4.0-beta01androidx.activity:activity-compose:1.4.0-beta01androidx.activity:activity-ktx:1.4.0-beta011.4.0-beta01 版本包含這些修訂版本。

API 變更

  • 修正了 ActivityResultContracts.OpenMultipleDocumentsActivityResultContracts.GetMultipleContents 的類型,這項問題會在使用透過 Java 程式設計語言編寫的程式碼時,導致使用 List<? extends Uri> 的輸出類型(If71de)。
  • 現在,在透過 ActivityResultContracts.StartActivityForResultActivityResultContracts.StartIntentSenderForResult 以及 ActivityResultContracts.RequestMultiplePermissions 類別中現在公開的 Companion 物件使用 Kotlin 時,可以存取其中的常數 (aosp/1832555)

說明文件更新

  • API 的淘汰訊息現在已由 Activity Result API (即startActivityForResultstartIntentSenderForResultonActivityResultrequestPermissionsonRequestPermissionsResult) 處理,並已加以擴充以提供更多詳細資料。(cce80f)

1.4.0-alpha02 版

2021 年 9 月 15 日

發布了 androidx.activity:activity:1.4.0-alpha02androidx.activity:activity-compose:1.4.0-alpha02androidx.activity:activity-ktx:1.4.0-alpha021.4.0-alpha02 版包含此連結所列的修訂項目。

新功能

  • activity-compose 構件現在包含 LaunchDuringComposition Lint 錯誤,會讓您無法呼叫 ActivityResultLauncherlaunch 方法以將其加入組成,這是因為組成不應有副作用。請使用 API 處理副作用 (7c2bbeb/191347220)。

API 變更

  • ActivityResultContract 類別已經以 Kotlin 重新編寫,確保開發人員使用 Kotlin 編寫自訂合約時,能夠對輸入和輸出類別定義正確的是否可為空值設定 (I8a8f5)
  • ActivityResultContracts 類別和其合約已經以 Kotlin 重新編寫,以確保提供了適當的是否可為空值設定 (I69802)

1.4.0-alpha01 版

2021 年 9 月 1 日

發布 androidx.activity:activity:1.4.0-alpha01androidx.activity:activity-compose:1.4.0-alpha01androidx.activity:activity-ktx:1.4.0-alpha011.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 (Ida75db/192567522)

外部貢獻

  • 感謝 dmitrilc 修正 ActivityResult 說明文件中的錯字 (#221)

1.3.1 版

1.3.1 版

2021 年 8 月 4 日

發布了 androidx.activity:activity:1.3.1androidx.activity:activity-compose:1.3.1androidx.activity:activity-ktx:1.3.11.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.0androidx.activity:activity-compose:1.3.0androidx.activity:activity-ktx:1.3.01.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-rc02androidx.activity:activity-compose:1.3.0-rc02androidx.activity:activity-ktx:1.3.0-rc021.3.0-rc02 版包含此連結所列的修訂項目。

修正錯誤

  • ActivityResultRegistry 回呼現在會正確儲存與還原,因此回呼不會在 savedState 中重複 (I97816b/191893160)。

1.3.0-rc01 版

2021 年 7 月 1 日

發布 androidx.activity:activity:1.3.0-rc01androidx.activity:activity-compose:1.3.0-rc01androidx.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-beta02androidx.activity:activity-compose:1.3.0-beta02androidx.activity:activity-ktx:1.3.0-beta021.3.0-beta02 版包含此連結所列的修訂項目。

已更新 activity-compose 以依附於 Compose 1.0.0-beta09。現在,androidx.compose.ui:ui-test-junit4activity-compose 有一個編譯時間依附元件。

1.3.0-beta01 版

2021 年 6 月 2 日

發布 androidx.activity:activity:1.3.0-beta01androidx.activity:activity-compose:1.3.0-beta01androidx.activity:activity-ktx:1.3.0-beta011.3.0-beta01 版包含此連結所列的修訂項目

API 變更

  • 先前淘汰的 @Composable registerForActivityResult() 方法已移除,請使用 rememberLauncherForActivityResult()。(Ic39d3)

1.3.0-alpha08 版

2021 年 5 月 18 日

發布 androidx.activity:activity:1.3.0-alpha08androidx.activity:activity-compose:1.3.0-alpha08androidx.activity:activity-ktx:1.3.0-alpha081.3.0-alpha08 版包含此連結所列的修訂項目。

新功能

  • 新的 CaptureVideo ActivityResultContract 會傳回布林值給 ActivityResultCallback,指示影片是否成功儲存在指定的 URI。這項變更取代現已淘汰的 TakeVideo 合約,因為相機應用程式很少支援傳回縮圖點陣圖,因此造成結果不實用。(Ie21f2b/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-alpha07androidx.activity:activity-compose:1.3.0-alpha07androidx.activity:activity-ktx:1.3.0-alpha071.3.0-alpha07 版包含此連結所列的修訂項目。

修正錯誤

  • rememberLauncherForActivityResult 現在會傳回同一個 ActivityResultLauncher 執行個體的穩定參照,即使合約因重組作業而有所變動也是如此 (Id2d6d)
  • 使用 1.3.0 以上的不穩定版 Fragment 時,系統不會再擲回要求您使用 1.3.0 的誤判 Lint 錯誤(aosp/1670206b/184847092)

1.3.0-alpha06 版

2021 年 4 月 7 日

發布了 androidx.activity:activity:1.3.0-alpha06androidx.activity:activity-compose:1.3.0-alpha06androidx.activity:activity-ktx:1.3.0-alpha061.3.0-alpha06 版包含此連結所列的修訂項目。

API 變更

  • registerForActivityResult() API 已重新命名為 rememberLauncherForActivityResult(),以更明確地顯示傳回的 ActivityResultLauncher 是系統為您儲存的受管理物件。現在,如果嘗試呼叫 unregister,回傳的 ActivityResultLauncher 將會擲回錯誤(I2bb6d)
  • LocalOnBackPressedDispatcherOwner.currentLocalActivityResultRegistryOwner.current 現在會傳回可為空值的值,以更準確地判斷這個值是否可用在目前組合中。現在,如果找不到底層擁有者,則需要這些 API 的 API (例如 BackHandlerrememberLauncherForActivityResult()) 將會分別擲回更具有說明性的錯誤。現在,即使沒有找到 OnBackPressedDispatcherOwner (例如預覽 NavHost 時),NavHost 也可正常運作 (I7d8b4)

修正錯誤

  • 現在,在發生以下事件時,BackHandler 會正確攔截按下返回按鈕的操作:Activity 先是 STOPPED,然後再度變為 STARTED,而其他回呼則是透過 LifecycleOwner 新增(I71de6b/182284739)。
  • 使用 launch() 方法擴充功能 (包含具有 Unit 輸入內容的自訂 ActivityResultContract) 時,不會再造成 NullPointerException (I76282b/183837954)

1.3.0-alpha05 版

2021 年 3 月 24 日

發布了 androidx.activity:activity:1.3.0-alpha05androidx.activity:activity-compose:1.3.0-alpha05androidx.activity:activity-ktx:1.3.0-alpha051.3.0-alpha05 版包含此連結所列的修訂項目。

修正錯誤

  • Activity 1.2.2 起修正 InvalidFragmentVersionForActivityResult Lint 檢查中的以下問題:使用 Fragment 1.3.1 以上版本時出現誤判狀況 (I54da1b/182388985)。
  • Activity 1.2.2 起:從之前在另一個 Intent 中以附加項目形式儲存的 ActivityResultContract 中啟動 Intent 時,ComponentActivity 現在不會再發生 ClassNotFoundException (Ieff05b/182906230)。

依附元件更新

1.3.0-alpha04 版

2021 年 3 月 10 日

發布 androidx.activity:activity:1.3.0-alpha04androidx.activity:activity-compose:1.3.0-alpha04androidx.activity:activity-ktx:1.3.0-alpha041.3.0-alpha04 版包含此連結所列的修訂項目。

修正錯誤

  • Activity 1.2.1 起:RequestMultiplePermissions 現在一律會對所有要求的權限傳回結果,而非只傳回先前未授予權限的結果(I50bc3b/180884668)。
  • Activity 1.2.1 起:現在,即使您執行 unregister() 後再次使用相同金鑰執行 register()ActivityResultRegistry 仍可確保進行中的 launch() 要求將傳回其結果 (I9ef34b/181267562)。
  • Activity Compose 不再將測試依附元件新增至執行階段類別路徑。(Ifd8b3)
  • 修正了 BackHandler 的以下問題:在重組後,仍會使用先前設定的 onBack lambda (8eb5eb)

1.3.0-alpha03 版

2021 年 2 月 24 日

發布了 androidx.activity:activity:1.3.0-alpha03androidx.activity:activity-compose:1.3.0-alpha03androidx.activity:activity-ktx:1.3.0-alpha031.3.0-alpha03 版包含此連結所列的修訂項目。

新功能

  • 現在可以使用 Composable registerForActivityResult 函式從可組合項中的活動取得結果 (Ia7851b/172690553)。

API 變更

  • LocalOnBackPressedDispatcherOwner 現在有一個可與 CompositionLocalProvider 搭配使用的 provides 函式,並取代 asProvidableCompositionLocal() API (I45d24)

1.3.0-alpha02 版

2021 年 2 月 10 日

發布 androidx.activity:activity:1.3.0-alpha02androidx.activity:activity-compose:1.3.0-alpha02androidx.activity:activity-ktx:1.3.0-alpha021.3.0-alpha02 版包含此連結所列的修訂項目。

修正錯誤

  • 修正 Activity Compose 1.3.0-alpha01 中的以下問題:使用 Compose 1.0.0-alpha12 時出現 NoSuchMethodError: No static method setContent 例外狀況。所有 Compose 使用者都應依附於 1.3.0-alpha02 以上版本 (b/179911234)

API 變更

  • BackHandler API 可用於允許 Composable 攔截系統返回按鈕 (I58ed5b/172154006)。

1.3.0-alpha01 版

2021 年 2 月 10 日

發布 androidx.activity:activity:1.3.0-alpha01androidx.activity:activity-compose:1.3.0-alpha01androidx.activity:activity-ktx:1.3.0-alpha011.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.4androidx.activity:activity-ktx:1.2.41.2.4 版包含此連結所列的修訂項目。

修正錯誤

1.2.3 版

1.2.3 版

2021 年 5 月 5 日

發布 androidx.activity:activity:1.2.3androidx.activity:activity-ktx:1.2.31.2.3 版包含此連結所列的修訂項目。

修正錯誤

  • 使用 launch() 方法擴充功能 (包含具有 Unit 輸入內容的自訂 ActivityResultContract) 時,不會再造成 NullPointerException (I76282b/183837954)
  • 修正誤判的 Lint 錯誤訊息:使用較新版 Fragment 的快照、Alpha 版、Beta 版或 RC 版時,此訊息會提示您使用 Fragment 1.3.0 (f4a57eb/184847092)。

1.2.2 版

1.2.2 版

2021 年 3 月 24 日

發布 androidx.activity:activity:1.2.2androidx.activity:activity-ktx:1.2.21.2.2 版包含此連結所列的修訂項目。

修正錯誤

  • 修正 InvalidFragmentVersionForActivityResult Lint 檢查中的以下問題:使用 Fragment 1.3.1 以上版本時出現誤判狀況 (I54da1b/182388985)。
  • 從之前在另一個 Intent 中以附加項目形式儲存的 ActivityResultContract 中啟動 Intent 時,ComponentActivity 現在不會再發生 ClassNotFoundException (Ieff05b/182906230)。

依附元件更新

1.2.1 版

1.2.1 版

2021 年 3 月 10 日

發布 androidx.activity:activity:1.2.1androidx.activity:activity-ktx:1.2.11.2.1 版本包含以下修訂項目。

修正錯誤

  • RequestMultiplePermissions 現在一律會針對所有要求的權限傳回結果,而非只傳回先前未授予權限的結果 (I50bc3b/180884668)。
  • 現在,即使您執行 unregister() 後再次使用相同的金鑰執行 register()ActivityResultRegistry 仍可確保進行中的 launch() 要求將傳回其結果 (I9ef34b/181267562)。

1.2.0 版

1.2.0 版

2021 年 2 月 10 日

發布 androidx.activity:activity:1.2.0androidx.activity:activity-ktx:1.2.01.2.0 版包含此連結所列的修訂項目。

自 1.1.0 版以來的重大異動

  • Activity Result APIComponentActivity 現在提供 ActivityResultRegistry,讓您無需覆寫 Activity 或 Fragment 中的方法,即可處理 startActivityForResult() + onActivityResult() 以及 requestPermissions() + onRequestPermissionsResult() 流程、透過 ActivityResultContract 提升類型安全,並提供測試這些流程的掛鉤。請參閱最新的從 Activity 取得結果
  • ContextAwareComponentActivity 現在實作 ContextAware,可讓您新增一或多個 OnContextAvailableListener 例項,這些例項可在基本 Activity.onCreate()「之前」收到回呼。

    • 暫停的 Kotlin 擴充功能 withContextAvailable() 可讓您在 Context 變為可用時執行非暫停程式碼區塊,並傳回結果。
    • Fragment 1.3.0 中的 FragmentActivity 會使用這個 API 來還原 FragmentManager 的狀態。任何新增至 FragmentActivity 子類別的事件監聽器都會在該事件監聽器之後執行。
    • AppCompat 1.3.0-alpha02 以上版本中的 AppCompatActivity 會使用這個 API。任何新增至 AppCompatActivity 子類別的事件監聽器都會在該事件監聽器之後執行。
  • ViewTree 支援ComponentActivity 現在支援在 Lifecycle 2.3.0SavedState 1.1.0 中新增的 ViewTreeLifecycleOwner.get(View)ViewTreeViewModelStoreOwner.get(View)ViewTreeSavedStateRegistryOwner API,以便針對任何直接新增至 ComponentActivity 的 View 傳回 Activity 做為 LifecycleOwnerViewModelStoreOwnerSavedStateRegistryOwner

  • reportFullyDrawn() 向後移植 - reportFullyDrawn()Activity 方法已在 ComponentActivity 中向後移植,以便在所有 API 級別中使用、修正 API 19 中的異常終止問題,並為所有 API 級別新增這個方法的追蹤記錄。

1.2.0-rc01 版

2020 年 12 月 16 日

發布 androidx.activity:activity:1.2.0-rc01androidx.activity:activity-ktx:1.2.0-rc011.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-beta02androidx.activity:activity-ktx:1.2.0-beta021.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-beta01androidx.activity:activity-ktx:1.2.0-beta011.2.0-beta01 版包含此連結所列的修訂項目。

修正錯誤

  • ActivityResultRegistry 現在會隨機產生整數,直到發現未分配做為要求程式碼 register() 使用的整數為止,藉此避免因要求程式碼遞增而可能導致整數溢位 (b/168779518)

  • ActivityResultLauncher 上呼叫 unregister() 時,會正確移除 Lifecycle 觀察器 (b/165608393)

行為變更

  • 現在,在嘗試使用 Lifecycle 已達到 STARTEDLifecycleOwner 來呼叫 register() 時,ActivityResultRegistry 會擲回 IllegalStateException (b/165435866)

說明文件更新

  • ContextAware 說明文件會連結至 LifecycleOwner,藉此醒目顯示 Lifecycle 回呼,以做為建立和刪除事件的適當位置。(aosp/1414152)

1.2.0-alpha08 版

2020 年 8 月 19 日

發布 androidx.activity:activity:1.2.0-alpha08androidx.activity:activity-ktx:1.2.0-alpha081.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)

修正錯誤

  • 修正了在使用 Lint 27.1.0 以上版本時造成 ActivityResultFragmentVersionDetector Lint 檢查中斷的問題 (b/162155191)

1.2.0-alpha07 版

2020 年 7 月 22 日

發布 androidx.activity:activity:1.2.0-alpha07androidx.activity:activity-ktx:1.2.0-alpha071.2.0-alpha07 版包含此連結所列的修訂項目。

新功能

  • 在使用 Activity Result API 時新增 InvalidFragmentVersionForActivityResult Lint 檢查,以驗證您正在使用的是 Fragment 1.3.0-alpha07,避免執行階段因「要求程式碼無效」問題而停止運作,以及因使用舊版 Fragment 而導致權限要求無法運作。(b/152554847)

外部貢獻

  • 修正了針對 RequestPermission Activity Result 合約剖析結果時出現的 ArrayIndexOutOfBoundsException (I8f9e3b/161057605)。

1.2.0-alpha06 版

2020 年 6 月 10 日

發布 androidx.activity:activity:1.2.0-alpha06androidx.activity:activity-ktx:1.2.0-alpha061.2.0-alpha06 版包含此連結所列的修訂項目。

新功能

  • 您現在可以在 Kotlin 中解構 ActivityResult 類別,以直接存取 requestCodeintent (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-alpha05androidx.activity:activity-ktx:1.2.0-alpha051.2.0-alpha05 版包含此連結所列的修訂項目。

新功能

API 變更

  • TakePicture 合約現在會傳回表示成功的 boolean,而不是縮圖 Bitmap,因為在將圖片寫入提供的 Uri 時,相機應用程式很少支援這種格式 (b/154302879)
  • 移除 ActivityResultLauncher 中的 invoke() 擴充功能,以便明確使用 launch() 更清楚地指示這些都是非同步作業。launch 的 Kotlin 擴充功能已新增至 ActivityResultLauncher<Void>ActivityResultLauncher<Unit>androidx.activity.result 套件,這樣就無需在 nullUnit 中分別傳送,以鏡像先前已 invoke() 的擴充功能的鏡像該行為。(aosp/1304674aosp/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-alpha04androidx.activity:activity-ktx:1.2.0-alpha041.2.0-alpha04 版本包含以下修訂項目。

新功能

  • 向 ActivityResult API 新增了可以呼叫 startIntentSenderForResult 的合約。(b/153007517)

API 變更

  • 在這裡的 ComponentActivityFragment 1.3.0-alpha04 中,prepareCall() 方法已重新命名為 registerForActivityResult() (aosp/1278717)
  • GetContentsOpenDocumentsRequestPermissions 合約已分別重新命名為 GetMultipleContentsOpenMultipleDocumentsRequestMultiplePermissions。(aosp/1280161)
  • ComponentActivity 現在會實作 ActivityResultRegisteryOwner 介面。(aosp/1290888)
  • 已淘汰 ComponentActivity 上的 startActivityForResult()/onActivityResult()onRequestPermissionsResult() API。請使用 Activity Result API。(b/154751887)

修正錯誤

  • 使用 GetMultipleContentsOpenMultipleDocuments 合約並選取單一項目時,現在會正確地向您的回呼傳回結果 (b/152941153)

1.2.0-alpha03 版

2020 年 4 月 1 日

發布 androidx.activity:activity:1.2.0-alpha03androidx.activity:activity-ktx:1.2.0-alpha031.2.0-alpha03 版包含此連結所列的修訂項目。

新功能

  • 已將 TakeVideoPickContactGetContentGetContentsOpenDocumentOpenDocumentsOpenDocumentTreeCreateDocument 合約新增至 ActivityResultContracts 提供的預先建構合約組 (aosp/1262482aosp/1266916aosp/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)
  • ActivityResultContactcreateIntent() 方法現在採用 Context 以及輸入內容以建立明確意圖。(aosp/1238800)
  • ActivityResultContract 現在可以覆寫 getSynchronousResult(),無需呼叫 startActivityForResult 即可傳遞結果。如果已授予所要求的權限,RequestPermissionRequestPermissions 合約可利用這個方法正確傳遞「已授權」狀態 (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-alpha02androidx.activity:activity-ktx:1.2.0-alpha021.2.0-alpha02 版包含此連結所列的修訂項目。

新功能

  • ActivityResultRegistryComponentActivity 現在提供 ActivityResultRegistry,讓您無需覆寫 Activity 或 Fragment 中的方法,即可處理 startActivityForResult() + onActivityResult() 以及 requestPermissions() + onRequestPermissionsResult() 流程,透過 ActivityResultContract 提升類型安全,並提供測試這些流程的掛鉤。詳情請參閱最新的從 Activity 取得結果 (b/125158199)

1.2.0-alpha01 版

2020 年 3 月 4 日

發布 androidx.activity:activity:1.2.0-alpha01androidx.activity:activity-ktx:1.2.0-alpha011.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.01.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-rc03androidx.activity:activity-ktx:1.1.0-rc031.1.0-rc03 版包含此連結所列的修訂項目。

依附元件變更

  • Activity 現在依附於 Lifecycle 2.2.0-rc03 和 Lifecycle ViewModel SavedState 1.0.0-rc03

1.1.0-rc02 版

2019 年 11 月 7 日

發布 androidx.activity:activity:1.1.0-rc02androidx.activity:activity-ktx:1.1.0-rc021.1.0-rc02 版包含此連結所列的修訂項目。

依附元件變更

  • Activity 現在依附於 Lifecycle 2.2.0-rc02

1.1.0-rc01 版

2019 年 10 月 23 日

發布 androidx.activity:activity:1.1.0-rc01androidx.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-beta01androidx.activity:activity-ktx:1.1.0-beta011.1.0-beta01 版包含此連結所列的修訂項目

依附元件變更

  • Activity 現在依附於 SavedState 1.0.0 穩定版。

1.1.0-alpha03 版

2019 年 9 月 5 日

發布 androidx.activity:activity:1.1.0-alpha03androidx.activity:activity-ktx:1.1.0-alpha03。您可以前往這裡查看這個版本包含的修訂項目。

新功能

  • Activity 現在依附於 Core 1.1.0 穩定版。

修正錯誤

1.1.0-alpha02 版

2019 年 8 月 7 日

發布 androidx.activity:activity:1.1.0-alpha02androidx.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-alpha01androidx.activity:activity-ktx:1.1.0-alpha01。您可以前往這裡查看這個版本包含的修訂項目。

新功能

  • activity 現在依附於 Lifecycle 2.2.0-alpha02。(aosp/1007817)
  • activity-ktxlifecycle-runtime-ktx 中新增了依附元件;在使用 activity-ktx 或依附於 activity-ktx 的程式庫 (例如 fragment-ktx) 時,您不再需要明確將其加入依附元件中 (aosp/987162)。

1.0.0 版

1.0.0 版

2019 年 9 月 5 日

發布 androidx.activity:activity:1.0.0androidx.activity:activity-ktx:1.0.0。您可以前往這裡查看這個版本包含的修訂項目。

1.0.0 版的主要功能

  • ComponentActivityComponentActivity 用來當做 Fragment 1.1.0FragmentActivity 的新基礎類別,並且擴展為 AppCompat 1.1.0 中的 AppCompatActivity
  • activity-ktxactivity-ktx 模組包含 by viewModels Kotlin 屬性擴充功能,用於存取 ViewModel。當您加入 Fragment 1.1.0fragment-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-rc01androidx.activity:activity-ktx:1.0.0-rc01,且自 1.0.0-beta01 版以來皆無異動。您可以前往這裡查看這個版本包含的修訂項目。

1.0.0-beta01 版

2019 年 6 月 5 日

發布 androidx.activity::activity:1.0.0-beta01androidx.activity:activity-ktx:1.0.0-beta01,且自 1.0.0-alpha08 版以來皆無異動。您可以前往這裡查看這個版本包含的修訂項目。

1.0.0-alpha08 版

2019 年 5 月 7 日

發布 androidx.activity:activity:1.0.0-alpha08androidx.activity:activity-ktx:1.0.0-alpha08。您可以前往這裡查看這個版本包含的修訂版本。

API 變更

  • 破壞性變更:已移除 ComponentActivity 上先前淘汰的 addOnBackPressedCallbackremoveOnBackPressedCallback 方法 (aosp/953857)。
  • OnBackPressedCallbacksetEnabled()isEnabled() 方法現為最終版 (b/131416833)
  • OnBackPressedCallbackremove() 方法現在為最終版 (aosp/952720)。
  • OnBackPressedDispatcher 現在有公開建構函式,您可以建構自己的測試用執行個體等等 (aosp/953431)。
  • ComponentActivityonBackPressed() 現已明確標記為 @MainThread (aosp/952721)

修正錯誤

  • 修正了在透過 LifecycleOwner 新增 OnBackPressedCalbackhandleOnBackPressed() 方法中呼叫 remove() 時出現的 ConcurrentModificationException (b/131765095)

1.0.0-alpha07 版

2019 年 4 月 25 日

發布 androidx.activity:activity:1.0.0-alpha07androidx.activity:activity-ktx:1.0.0-alpha07。您可以前往這裡查看這個版本包含的修訂版本。

API 變更

在這個版本中,onBackPressed() 的處理方式有重大變更。詳情請參閱「更新的自訂返回功能說明文件」。

  • OnBackPressedCallbackOnBackPressedDispatcher 的方法已標記為 @MainThread (aosp/943813)
  • handleOnBackPressed() 方法不再傳回 booleanOnBackPressedCallback 現在變成是一個可以啟用或停用的抽象類別,只有當新的 isEnabled() 方法傳回「是」的時候才會呼叫 handleOnBackPressed()。在這種情況下,您必須處理返回按鈕。(aosp/944518)
  • OnBackPressedDispatcheraddCallback 方法不再傳回 Cancellable 執行個體。OnBackPressedCallback 現在包含可執行此功能的 remove() 方法,因此您可以在 handleOnBackPressed() 期間呼叫 remove() (aosp/944519) (aosp/946316)
  • activity-ktx 現在包含 addCallback 的接收器限定範圍回呼,可接受實作 handleOnBackPressed() 的 lamdba,且可存取 isEnabledremove() (aosp/944520)

1.0.0-alpha06 版

2019 年 4 月 3 日

發布 androidx.activity:activity:1.0.0-alpha06androidx.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-alpha05androidx.activity:activity-ktx:1.0.0-alpha05。您可以前往這裡,查看這個版本所包含修訂項目的完整清單。

新功能

  • 已對 @ContentView 註解查詢加入快取處理。(b/123709449)

1.0.0-alpha04 版

2019 年 1 月 30 日

發布 androidx.activity:activity 1.0.0-alpha04androidx.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,這是現有 FragmentActivityAppCompatActivity 的新基礎類別。

新功能

  • 您現在無需覆寫活動中的方法,即可透過 addOnBackPressedCallback 註冊 OnBackPressedCallback 以接收 onBackPressed() 回呼。
  • 新增 by viewModels() Kotlin 屬性委派項目,以從 ComponentActivity 擷取 ViewModel
  • onStop() 中的待處理輸入事件 (例如點擊) 現在已取消。

API 相關異動

  • LifecycleOwnerViewModelStoreOwner 的實作已從 FragmentActivity 移至 ComponentActivity
  • 淘汰了 onRetainCustomNonConfigurationInstance。請使用 ViewModel 儲存需要在設定變更後繼續留存的物件。