Activity

存取以「Activity」為基礎建構的可組合 API。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2022 年 9 月 7 日 1.5.1 1.6.0-rc02 - -

宣告依附元件

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

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

Groovy

dependencies {
    def activity_version = "1.5.1"

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

Kotlin

dependencies {
    val activity_version = "1.5.1"

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

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

意見回饋

您的意見可協助我們改善 Jetpack。發現新的問題或有改善這個程式庫的想法時,請告訴我們。建立新的問題之前,請先查看這個程式庫中的現有問題。只要按一下星號按鈕,即可投票給現有的問題。

建立新問題

詳情請參閱 Issue Tracker 說明文件

1.6.0 版本

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 變更

  • ComponentActivitystartActivityForResultstartIntentSenderForResult 方法標記 @NonNull,因為傳遞 null 每次都會導致當機。(Id2a25b/231476082)

修正錯誤

  • 活動1.5.1︰當 launch 呼叫擲回任何 Exception 且登錄的回呼沒有 LifecycleOwner 時,ActivityResultRegistry 不會再傳回結果給 ActivityResultCallback。(Ia7ff7b/238350794)
  • 活動1.5.1ComponentActivity 現在可正確分派選單呼叫給 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 且登錄的回乎沒有 LifecycleOwner 時,ActivityResultRegistry 不會再傳回結果給 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 傳遞至活動 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)

修正錯誤

  • 已修復在首次存取 ViewModel 時,從 registerForActivityResult() 進行回呼或者對 LifecycleObserver 進行回呼 (新增做為 ComponentActivityinit 的一部分) 時發生的異常終止。(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 擴充功能方法來代管活動中的 Jetpack Compose UI,以及 Compose 專屬包裝函式來和 ComponentActivity API 互動,以處理系統返回按鈕和 Activity Result API。詳情請參閱說明文件
  • CaptureVideo 合約 - CaptureVideoActivityResultContract 會取代目前已淘汰的 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 以上的不穩定版片段時,系統不會再擲回對您使用 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)

修正錯誤

  • 現在,在發生 Activity 為 STOPPED,之後再度為 STARTED,同時之前透過 LifecycleOwner 新增其他回呼的情況時,BackHandler 會正確攔截按下返回按鈕的操作。(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 起:修正了使用 Fragment 1.3.1 以上版本時,InvalidFragmentVersionForActivityResult Lint 檢查中會造成誤判的問題。(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 版本包含以下修訂項目。

修正錯誤

  • 修正了在使用 Fragment 1.3.1 以上版本時,InvalidFragmentVersionForActivityResult Lint 檢查中會造成誤判的問題。(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()backport - 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-alpha07 已發布。1.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 變更

  • ComponentActivity 上 (這裡) 及 Fragment 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 的任何 View 傳回 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 版以來的重要異動

  • 生命週期 ViewModel SavedState 整合SavedStateViewModelFactory 現在是使用 by viewModels()ViewModelProvider 建構函式或 ViewModelProviders.of() 搭配 ComponentActivity 或其子類別時的預設工廠。

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 建構函式或搭配 ComponentActivityViewModelProviders.of() 時預設原廠設定 (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 屬性擴充功能,用於存取 ViewModels。當您加入 Fragment 1.1.0fragment-ktx 時,會自動加入這個模組。
  • OnBackededDispatcher:您現在可以透過任何 LifecycleOwner (例如片段) 註冊 OnBackPressedCallback 以攔截系統返回按鈕事件來做為可組合替代程式碼,用來覆寫 onBackPressed()。已將接收器版本 addCallback 的 lambda 新增至 activity-ktx。詳情請參閱提供自訂的返回導覽功能說明文件
  • onRetainCustomNonConfigurationInstance 淘汰:已淘汰 onRetainCustomNonConfigurationInstance() 和相關的 getLastCustomNonConfigurationInstance() API。強烈建議您使用 ViewModels 儲存非設定狀態,因為這可以提供適用於任何 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 儲存需要在設定變更後繼續留存的物件。