Lifecycle

生命週期感知元件會因應其他元件的生命週期狀態變化 (例如活動和片段) 採取動作。這些元件可協助您產生更井然有序且通常更精簡的程式碼,維護起來更輕鬆。

下表列出了 androidx.lifecycle 群組中的所有構件。

構件 穩定 釋放 候選版 Beta 版 Alpha 版
lifecycle-* 2.4.1 - 2.5.0-beta01 -
lifecycle-viewmodel-compose 2.4.1 - 2.5.0-beta01 -
這個程式庫上次更新日期:2022 年 4 月 20 日

宣告依附元件

如果要為 Lifecycle 新增依附元件,您必須將 Google Maven 存放區新增至專案。詳情請參閱 Google 的 Maven 存放區

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

Kotlin

Groovy

    dependencies {
        def lifecycle_version = "2.5.0-alpha04"
        def arch_version = "2.1.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
        // ViewModel utilities for Compose
        implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.5.0-alpha04"
        val arch_version = "2.1.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
        // ViewModel utilities for Compose
        implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        kapt("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")
    }
    

Java

Groovy

    dependencies {
        def lifecycle_version = "2.5.0-alpha04"
        def arch_version = "2.1.0"

        // ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
        // LiveData
        implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
        // Lifecycles only (without ViewModel or LiveData)
        implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

        // Saved state module for ViewModel
        implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"

        // Annotation processor
        annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"

        // optional - ReactiveStreams support for LiveData
        implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version"

        // optional - Test helpers for LiveData
        testImplementation "androidx.arch.core:core-testing:$arch_version"
    }
    

Kotlin

    dependencies {
        val lifecycle_version = "2.5.0-alpha04"
        val arch_version = "2.1.0"

        // ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version")
        // LiveData
        implementation("androidx.lifecycle:lifecycle-livedata:$lifecycle_version")
        // Lifecycles only (without ViewModel or LiveData)
        implementation("androidx.lifecycle:lifecycle-runtime:$lifecycle_version")

        // Saved state module for ViewModel
        implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

        // Annotation processor
        annotationProcessor("androidx.lifecycle:lifecycle-compiler:$lifecycle_version")
        // alternately - if using Java8, use the following instead of lifecycle-compiler
        implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

        // optional - helpers for implementing LifecycleOwner in a Service
        implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

        // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
        implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

        // optional - ReactiveStreams support for LiveData
        implementation("androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version")

        // optional - Test helpers for LiveData
        testImplementation("androidx.arch.core:core-testing:$arch_version")
    }
    

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

意見回饋

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

建立新問題

詳情請參閱 Issue Tracker 說明文件

2.5 版本

2.5.0-beta01 版本

2022 年 4 月 20 日

發布 androidx.lifecycle:lifecycle-*:2.5.0-beta012.5.0-beta01 版本包含這些修訂版本。

API 異動

  • 新增 SavedStateHandle.saveable 屬性委派檔,以便使用屬性名稱做為鍵,將狀態保存到 SavedStateHandle 中 (I8bb86b/225014345)

修正錯誤

  • 修正問題:使用多個返回堆疊時,將非主要底部導航分頁中的一個 NavHost 巢狀至另一個 NavHost 時會導致 IllegalStateException。(I11bd5b/228865698)

2.5.0-alpha06 版本

2022 年 4 月 6 日

發布 androidx.lifecycle:lifecycle-*:2.5.0-alpha062.5.0-alpha06 版本包含這些修訂版本。

新功能

  • 將實驗性 MutableState 超載新增至 SavedStateHandle.saveable,以與 rememberSaveable 保持一致 (I38cfeb/224565154)

API 異動

  • CreationExtras 現已改為抽象而非密封。(Ib8a7a)

修正錯誤

  • 已修正 SavedStateHandleController 造成的 IllegalStateException: Already attached to lifecycleOwner 錯誤。(I7ea47b/215406268)

2.5.0-alpha05 版本

2022 年 3 月 23 日

發布 androidx.lifecycle:lifecycle-*:2.5.0-alpha052.5.0-alpha05 版本包含這些修訂版本。

新功能

  • lifecycle-viewmodel-compose 模組現在提供 SavedStateHandleSaver,這項實驗性 API 可確保 SavedStateHandle 中的值與 rememberSaveable 使用的相同儲存執行個體狀態正確整合。(Ia88b7b/195689777)

API 異動

  • 修正與 Java 中 Lifecycle 2.3 及更新版本 Lifecycle 的相容性問題。(I52c8ab/219545060)

修正錯誤

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

2.5.0-alpha04 版本

2022 年 3 月 9 日

androidx.lifecycle:lifecycle-*:2.5.0-alpha04 發布。2.5.0-alpha04 版本包含這些修訂版本。

API 異動

  • SavedStateHandle 現在提供 getStateFlow() API,可傳回 Kotlin StateFlow 來協助監控值的變化,適合做為 LiveData 的替代方案。(Iad3abb/178037961)

2.5.0-alpha03 版本

2022 年 2 月 23 日

androidx.lifecycle:lifecycle-*:2.5.0-alpha03 發布。2.5.0-alpha03 版本包含這些修訂版本。

新功能

  • 新增了 addCloseable() API 和新的建構函式多載,可讓您為 ViewModel 加入一或多個 Closeable 物件,這些物件會在 ViewModel 清除時關閉,無須在 onCleared() 中進行任何手動操作。(I55ea0)
  • lifecycle-viewmodel 現在提供 InitializerViewModelFactory,讓您新增 lambda 來處理特定的 ViewModel 類別,所用主要資料來源為 CreationExtras。(If58fcb/216687549)
  • lifecycle-viewmodel-compose 現在提供 viewModel() API,可運用 lambda 工廠建立 ViewModel 執行個體,無須建立自訂 ViewModelProvider.Factory。(I97fbbb/216688927)

API 異動

  • 您現在可以透過 lifecycle-viewmodel-compose 使用 CreationExtras 建立 ViewModel。(I08887b/216688927)

行為變更

  • 現在如果嘗試將 Lifecycle.StateINITIALIZED 移至 DESTROYED,一律會擲回 IllegalStateException,不論 Lifecycle 是否附有觀測工具。(I7c390b/177924329)
  • 現在 LifecycleRegistry 達到 DESTROYED 狀態後會清除其觀測工具。(I4f8ddb/142925860)

2.5.0-alpha02 版本

2022 年 2 月 9 日

androidx.lifecycle:lifecycle-*:2.5.0-alpha02 發布。2.5.0-alpha02 版本包含這些修訂版本。

API 異動

  • SavedStateHandleSavedStateViewModelFactory 已轉換成 Kotlin,改善了這兩個類別中一般項目的「是否可為空值」屬性。 (Ib6ce2b/216168263I9647ab/177667711)
  • LiveData switchMap 函式參數的輸出值現在可設為空值。(I40396b/132923666)
  • LiveData -ktx 擴充功能現在會加註 @CheckResult,強制在呼叫這些函式時使用該結果。(Ia0f05b/207325134)

行為變更

  • 現在當指定的索引鍵沒有值時,SavedStateHandle 會適當地儲存 defaultValue。(I1c6ceb/178510877)

修正錯誤

  • Lifecycle 2.4.1:更新了 lifecycle-process,改為依附於 Startup 1.1.1,以確保修正項目預設可供使用,防止 ProcessLifecycleInitializer 擲回 StartupException。(Ib01dfb/216490724)
  • 現在當自訂 AndroidViewModel 類別的參數順序有誤且嘗試建立 ViewModel 時,系統會顯示更完善的錯誤訊息。(I340f7b/177667711)
  • 您現在可以透過 CreationExtras 使用 AndroidViewModelFactory 建立檢視模型,不必設定應用程式。(I6ebefb/217271656)

2.5.0-alpha01 版本

2022 年 1 月 26 日

androidx.lifecycle:lifecycle-*:2.5.0-alpha01 發布。2.5.0-alpha01 版本包含這些修訂版本。

ViewModel CreationExtras

在這個版本中,我們將為重塑 ViewModel 的建構方式打好基礎。我們不會採用一組既定的 ViewModelProvider.Factory 子類別分別加入額外的功能 (透過 AndroidViewModelFactory 允許使用 Application 建構函式參數、透過 SavedStateViewModelFactoryAbstractSavedStateViewModelFactory 允許使用 SavedStateHandle 建構函式參數等等),而會改用以全新概念 CreationExtras 為基礎的無狀態工廠。(Ia7343b/188691010b/188541057)

這項異動生效後,ViewModelProvider 不會再直接呼叫 ViewModelProvider.Factory 先前的 create(Class<T>) 方法,而會改為呼叫 create 的全新多載方法:create(Class<T>, CreationExtras)。這表示現在只要直接導入 ViewModelProvider.Factory 執行個體,即可存取這些新的 CreationExtras

  • ViewModelProvider.NewInstanceFactory.VIEW_MODEL_KEY:這個 String 可讓您存取傳送到 ViewModelProvider.get() 的自訂鍵。
  • ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY 可讓您存取 Application 類別。
  • SavedStateHandleSupport.SAVED_STATE_REGISTRY_OWNER_KEY 可讓您存取目前用於建構這個 ViewModel 的 SavedStateRegistryOwner
  • SavedStateHandleSupport.VIEW_MODEL_STORE_OWNER_KEY 可讓您存取目前用於建構這個 ViewModel 的 ViewModelStoreOwner
  • SavedStateHandleSupport.DEFAULT_ARGS_KEY 可讓您存取要用於建構 SavedStateHandle 的引數 Bundle

使用 Activity 1.5.0-alpha01Fragment 1.5.0-alpha01Navigation 2.5.0-alpha01時,系統預設會提供這些額外項目。如果您使用舊版程式庫,CreationExtras 將是空白的;ViewModelProvider.Factory 的所有現有子類別皆經過改寫,以同時支援舊版程式庫所使用的舊版建立路徑和日後會使用的 CreationExtras 路徑。

這些 CreationExtras 可讓您建構 ViewModelProvider.Factory,只將您需要的資訊傳遞至每個 ViewModel,而不需要採用嚴謹的 Factory 子類別階層:

class CustomFactory : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
        return when (modelClass) {
            HomeViewModel::class -> {
                // Get the Application object from extras
                val application = checkNotNull(extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY])
                // Pass it directly to HomeViewModel
                HomeViewModel(application)
            }
            DetailViewModel::class -> {
                // Create a SavedStateHandle for this ViewModel from extras
                val savedStateHandle = extras.createSavedStateHandle()
                DetailViewModel(savedStateHandle)
            }
            else -> throw IllegalArgumentException("Unknown class $modelClass")
        } as T
    }
}

我們只會針對有需要的 ViewModel,在 SavedStateHandleSupport 中使用 CreationExtrascreateSavedStateHandle() Kotlin 擴充功能建構 SavedStateHandle。(Ia6654b/188541057)

想要使用自訂 CreationExtras,請在你的 ComponentActivity 或 Fragment 中覆寫 getDefaultViewModelCreationExtras(),這樣該自訂類別就會以輔助植入的內建型態提供你的自訂 ViewModelProvider.Factory 使用。如果直接搭配 ViewModelProvider 或是使用 by viewModels()by activityViewModels() Kotlin 資源擴充功能,這些額外項目會自動提供給你的自訂 Factory。(I79f2bb/207012584b/207012585b/207012490)

修正錯誤

  • 修正了為 SavedStateHandle 提供的預設值在程序終止並重建後會再次出現 (即使已特地從 SavedStateHandle 中移除亦然) 的問題。這樣一來,SavedStateHandle 就不會再合併預設值和還原值,而只會使用還原值做為可靠資料來源。(I53a4b)

2.4 版本

2.4.1 版本

2022 年 2 月 9 日

發布 androidx.lifecycle:lifecycle-*:2.4.12.4.1 版本包含這些修訂版本。

修正錯誤

  • Lifecycle 2.5.0-alpha01 向後移植:修正了為 SavedStateHandle 提供的預設值在程序終止並重建後會再次出現 (即使已特地從 SavedStateHandle 中移除亦然) 的問題。這樣一來,SavedStateHandle 就不會再合併預設值和還原值,而只會使用還原值做為可靠資料來源。(I53a4b)
  • lifecycle-process 現在依附於 AndroidX Startup 1.1.1,這修正了使用 ProcessLifecycleInitializer 時會導致 StartupException 的迴歸問題。(b/216490724)

2.4.0 版本

2021 年 10 月 27 日

androidx.lifecycle:lifecycle-*:2.4.0 發布。2.4.0 版本包含這些修訂版本。

自 2.3.0 版以來的重要異動

  • 淘汰了 @OnLifecycleEvent,請改用 LifecycleEventObserverDefaultLifecycleObserver
  • 新增了 androidx.lifecycle:lifecycle-viewmodel-compose 程式庫,當中提供 viewModel() 可組合項和 LocalViewModelStoreOwner
    • 原始碼破壞性變更ViewModelProvider 已使用 Kotlin 重新編寫。ViewModelProvider.Factory.create method 現在不再允許使用可設為空值的一般項目。
  • androidx.lifecycle:lifecycle-runtime-ktx 加入了新的協同程式 API:
  • Lifecycle.repeatOnLifecycle,這個 API 會在生命週期進入特定狀態或更高階的狀態時,執行協同程式中某區塊的程式碼。隨著生命週期進入與退出目標狀態,該區塊的程式碼也會取消並重新啟動;
  • Flow.flowWithLifecycle,這個 API 會在生命週期進入特定狀態或更高階的狀態時,從 Flow 上游發送值。
  • DefaultLifecycleObserver 已從 lifecycle.lifecycle-common-java8 移至 lifecycle.lifecycle-commonlifecycle.lifecycle-common-java8 無法再提供 lifecycle.lifecycle-common 以外的任何其他功能,因此原本依附於該元件的項目可改用 lifecycle.lifecycle-common
  • lifecycle-viewmodel-ktx 的非協同程式 API 已移至 lifecycle-viewmodel 模組。
  • lifecycle-process 現在會使用 androidx.startup 進行 ProcessLifecycleOwner 初始化。

    在過去,這是透過 androidx.lifecycle.ProcessLifecycleOwnerInitializer 完成。

    如果您使用的是 tools:node="remove" (也就是過去用於初始化程序生命週期的 ContentProvider),則必須改為執行下列操作。

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

    (或)

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

2.4.0-rc01 版本

2021 年 9 月 29 日

androidx.lifecycle:lifecycle-*:2.4.0-rc01 發布,且自 Lifecycle 2.4.0-beta01 版以來皆無異動。2.4.0-rc01 版本包含這些修訂版本。

2.4.0-beta01 版本

2021 年 9 月 15 日

androidx.lifecycle:lifecycle-*:2.4.0-beta01 發布。2.4.0-beta01 版本包含這些修訂版本。

API 異動

  • 淘汰了 @OnLifecycleEvent,請改用 LifecycleEventObserverDefaultLifecycleObserver。(I5a8fa)
  • DefaultLifecycleObserver 已從 androidx.lifecycle.lifecycle-common-java8 移至 androidx.lifecycle.lifecycle-commonandroidx.lifecycle.lifecycle-common-java8 無法再提供 androidx.lifecycle.lifecycle-common 以外的任何其他功能,因此原本依附於該元件的項目可改用 androidx.lifecycle.lifecycle-common。(I021aa)
  • lifecycle-viewmodel-ktx 的非協同程式 API 已移至 lifecycle-viewmodel 模組。(I6d5b2)

外界貢獻

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

2.4.0-alpha03 版本

2021 年 8 月 4 日

androidx.lifecycle:lifecycle-*:2.4.0-alpha03 發布。2.4.0-alpha03 版本包含這些修訂版本。

API 異動

  • 原始碼破壞性變更:ViewModelProvider 已使用 Kotlin 重新編寫。ViewModelProvider.Factory.create 方法現在不再允許使用可設為空值的一般項目。(I9b9f6)

行為變更

  • 現在設定重複執行時,一律會依序叫用 Lifecycle.repeatOnLifecycleblock。(Ibab33)

外界貢獻

  • 感謝 chao2zhang 修正 repeatOnLifecycle 說明文件中的程式碼片段。#205

2.4.0-alpha02 版本

2021 年 6 月 16 日

androidx.lifecycle:lifecycle-*:2.4.0-alpha02 發布。2.4.0-alpha02 版本包含這些修訂版本。

新功能

  • lifecycle-runtime-ktx 新增了一項 RepeatOnLifecycleWrongUsage Lint 檢查功能,可偵測 onStart()onResume() 中不當使用 repeateOnLifecycle 的情況。(706078b/187887400)

API 異動

  • 移除了 LifecycleOwner.addRepeatingJob API,改為使用 Lifecycle.repeatOnLifecycle,後者遵循結構化並行需求且容易分析。(I4a3a8)
  • ProcessLifecycleInitializer 設為公開,供其他 androidx.startup.Initializer 做為依附元件使用。(I94c31)

修正錯誤

  • 修正了 NullSafeMutableLiveData Lint 檢查功能在欄位包含修飾符時遇到的問題。(#147b/183696616)
  • 修正了 NullSafeMutableLiveData Lint 檢查功能在程式碼使用一般項目時遇到的另一項問題。(#161b/184830263)

外界貢獻

2.4.0-alpha01 版本

2021 年 3 月 24 日

androidx.lifecycle:lifecycle-*:2.4.0-alpha01 發布。2.4.0-alpha01 版本包含這些修訂版本。

行為變更

  • lifecycle-process 現在會使用 androidx.startup 進行 ProcessLifecycleOwner 初始化。

    在過去,這是透過 androidx.lifecycle.ProcessLifecycleOwnerInitializer 完成。

    如果您使用的是 tools:node="remove" (也就是過去用於初始化程序生命週期的 ContentProvider),則必須改為執行下列操作。

     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities=\"${applicationId}.androidx-startup"
        android:exported="false"
        tools:node=\"merge">
        <!-- If you are using androidx.startup to initialize other components -->
        <meta-data
            android:name="androidx.lifecycle.ProcessLifecycleInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

     <!-- If you want to disable androidx.startup completely. -->
     <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
     </provider>
    

API 異動

  • 新增了 Flow.flowWithLifecycle API,其會在生命週期透過 Lifecycle.repeatOnLifecycle API 進入特定狀態或更高階的狀態時,從 Flow 上游發送值。這是另一種全新 LifecycleOwner.addRepeatinJob API 的替代方法。 (I0f4cd)

修正錯誤

  • Lifecycle 2.3.1 起:NonNullableMutableLiveData Lint 規則現在能夠正確區別「是否可為空值」屬性不同的欄位變數。(b/169249668)

Lifecycle Viewmodel Compose 1.0.0 版本

1.0.0-alpha07 版本

2021 年 6 月 16 日

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07 發布。1.0.0-alpha07 版本包含這些修訂版本。

破壞性 API 變更

  • viewModel() 現在可接受選用的 ViewModelStoreOwner,以便與 LocalViewModelStoreOwner 以外的擁有者合作。舉例來說,您現在可以使用 viewModel(navBackStackEntry) 擷取與特定導覽圖相關聯的 ViewModel。(I2628db/188693123)

1.0.0-alpha06 版本

2021 年 6 月 2 日

已釋出 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha061.0.0-alpha06 版本包含這些修訂版本。

經更新後支援 Compose 1.0.0-beta08 版本。

1.0.0-alpha05 版本

2021 年 5 月 18 日

已釋出 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha051.0.0-alpha05 版本包含這些修訂版本。

新功能

  • 經更新後支援 Compose 1.0.0-beta07 版本。

修正錯誤

  • ui-test-manifest 和 ui-tooling-data 的 AndroidManifest 檔案現在與 Android 12 相容 (I6f9deb/184718994)

1.0.0-alpha04 版本

2021 年 4 月 7 日

已釋出 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha041.0.0-alpha04 版本包含這些修訂版本。

依附元件變更

  • 這個版本可讓 androidx.hilt:hilt-navigation-composeandroidx.navigation:navigation-compose 同步處理 androidx.compose.compiler:compiler:1.0.0-beta04androidx.compose.runtime:runtime:1.0.0-beta04 依附元件。在 1.0.0 中,編譯器和執行階段必須相符。

1.0.0-alpha03 版本

2021 年 3 月 10 日

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha03 發布。1.0.0-alpha03 版本包含這些修訂版本。

API 異動

  • LocalViewModelStoreOwner.current 現在傳回可為空值的 ViewModelStoreOwner,以便更精確地確定 ViewModelStoreOwner 是否適用於目前組合。要求 ViewModelStoreOwner (例如 viewModel()NavHost) 的 API 在未設定 ViewModelStoreOwner 時仍會擲回例外狀況。(Idf39a)

Lifecycle-Viewmodel-Compose 1.0.0-alpha02 版本

2021 年 2 月 24 日

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha02 發布。1.0.0-alpha02 版本包含這些修訂版本。

API 異動

  • LocalViewModelStoreOwner 現提供可與 CompositionLocalProvider 搭配使用的 provides 函式,取代了 asProvidableCompositionLocal() API。(I45d24)

Lifecycle-Viewmodel-Compose 1.0.0-alpha01 版本

2021 年 2 月 10 日

androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 發布。1.0.0-alpha01 版包含這些修訂版本。

新功能

  • viewModel() 可組合項和 LocalViewModelStoreOwner 已從 androidx.compose.ui.viewinterop 移至 androidx.lifecycle.viewmodel.compose 套件中的這個構件。(I7a374)

2.3.1 版本

Lifecycle 2.3.1 版本

2021 年 3 月 24 日

androidx.lifecycle:lifecycle-*:2.3.1 發布。2.3.1 版本包含這些修訂版本。

修正錯誤

  • NonNullableMutableLiveData Lint 規則現在能夠正確區別「是否可為空值」屬性不同的欄位變數。(b/169249668)

2.3.0 版本

2.3.0 版本

2021 年 2 月 10 日

androidx.lifecycle:lifecycle-*:2.3.0 發布。2.3.0 版本包含下列修訂版本。

自 2.2.0 版以來的重大異動

  • SavedStateHandle 支援不可剖析的類別SavedStateHandle 現在支援延遲序列化,做法是讓您針對特定鍵呼叫 setSavedStateProvider(),這樣就能在系統要求 SavedStateHandle 儲存其狀態時,提供可回呼 saveState()SavedStateProvider。請參閱儲存無法剖析的類別
  • Lifecycle 行為強制執行
    • LifecycleRegistry 現在會強制將 DESTROYED 設為最終狀態。
    • LifecycleRegistry 現在會確認其方法是透過主執行緒呼叫。這一向是活動、片段等元件生命週期的必要規定。要是從非主執行緒加入觀測工具,就會導致執行階段發生難以偵測的異常終止情況。針對隸屬於您自有元件的 LifecycleRegistry 物件,您可以使用 LifecycleRegistry.createUnsafe(...) 明確地停用檢查功能,但這樣一來,您就必須確保有適當的同步處理機制,以因應透過不同執行緒存取這個 LifecycleRegistry 的情況。
  • 生命週期狀態和事件輔助方法:為 Lifecycle.Event 新增了 downFrom(State)downTo(State)upFrom(State)upTo(State) 的靜態輔助方法,以便依據指定 State 和轉換方向產生 Event。新增 getTargetState() 方法,當中會提供 Lifecycle 在 Event 結束後的直接轉換目標 State
  • withStateAtLeast:新增了 Lifecycle.withStateAtLeast API,等待生命週期達到特定狀態,並在狀態改變的時間點同步執行非暫停程式碼區塊,然後繼續執行結果。這些 API 與現有的 when* 方法不同,並不允許執行暫停程式碼,也不使用自訂調度工具。(aosp/1326081)
  • ViewTree API:全新的 ViewTreeLifecycleOwner.get(View)ViewTreeViewModelStoreOwner.get(View) API,可讓您依據 View 執行個體,分別擷取其所屬的 LifecycleOwnerViewModelStoreOwner。您必須升級至 Activity 1.2.0Fragment 1.3.0,以及 AppCompat 1.3.0-alpha01 以上版本,才能正確填入這項資訊。findViewTreeLifecycleOwnerfindViewTreeViewModelStoreOwner Kotlin 擴充功能可分別透過 lifecycle-runtime-ktxlifecycle-viewmodel-ktx 使用。
  • 淘汰了 LiveData.observe() Kotlin 擴充功能:使用 lambda 語法時所需的 LiveData.observe() Kotlin 擴充功能現已淘汰,這是因為使用 Kotlin 1.4 時不需用到該擴充功能。

2.3.0-rc01 版本

2020 年 12 月 16 日

androidx.lifecycle:lifecycle-*:2.3.0-rc01 發布。2.3.0-rc01 版本包含這些修訂版本。

修正錯誤

  • SavedStateHandlekeys() 方法現在於狀態儲存前後皆會維持一致;該方法現在除了包括在 set()getLiveData() 中所使用的鍵,也納入了先前在 setSavedStateProvider() 中所使用的鍵。(aosp/1517919b/174713653)

外界貢獻

2.3.0-beta01 版本

2020 年 10 月 1 日

androidx.lifecycle:lifecycle-*:2.3.0-beta01 發布。2.3.0-beta01 版本包含這些修訂版本。

API 異動

  • 使用 lambda 語法時所需的 LiveData.observe() Kotlin 擴充功能現已淘汰,這是因為使用 Kotlin 1.4 時不需用到該擴充功能。(I40d3f)

修正錯誤

說明文件變更

  • 更新了 liveData 建構工具和 asLiveData() 文件,加入有關變更指定逾時值的詳細資訊。(aosp/1122324)

2.3.0-alpha07 版本

2020 年 8 月 19 日

androidx.lifecycle:lifecycle-*:2.3.0-alpha07 發布。2.3.0-alpha07 版本包含這些修訂版本。

修正錯誤

  • 修正了 NullSafeMutableLiveData Lint 檢查中的異常終止問題。(aosp/1395367)

2.3.0-alpha06 版本

2020 年 7 月 22 日

androidx.lifecycle:lifecycle-*:2.3.0-alpha06 發布。2.3.0-alpha06 版本包含這些修訂版本。

新功能

  • Lifecycle.Event 新增了 downFrom(State)downTo(State)upFrom(State)upTo(State) 的靜態輔助方法,以便依據指定 State 和轉換方向產生 Event。新增 getTargetState() 方法,當中會提供 Lifecycle 在 Event 結束後的直接轉換目標 State。(I00887)
  • 新增了 Lifecycle.withStateAtLeast API,等待生命週期達到特定狀態,並在狀態改變的時間點同步執行非暫停程式碼區塊,然後繼續執行結果。這些 API 與現有的 when* 方法不同,並不允許執行暫停程式碼,也不使用自訂調度工具。(aosp/1326081)

行為變更

  • LifecycleRegistry 現在會強制將 DESTROYED 設為最終狀態。(I00887)
  • LifecycleRegistry 現在會確認其方法是透過主執行緒呼叫。這一向是活動、片段等元件生命週期的必要規定。要是從非主執行緒加入觀測工具,就會導致執行階段發生難以偵測的異常終止情況。針對隸屬於您自有元件的 LifecycleRegistry 物件,您可以使用 LifecycleRegistry.createUnsafe(...) 明確地停用檢查功能,但這樣一來,您就必須確保有適當的同步處理機制,以因應透過不同執行緒存取這個 LifecycleRegistry 的情況。(Ie7280b/137392809)

修正錯誤

  • 修正 NullSafeMutableLiveData 中的異常終止問題。(b/159987480)
  • 修正了 lifecycle-livedata-core-ktx (特別是 NullSafeMutableLiveData) 隨附的 Lint 檢查功能 ObsoleteLintCustomCheck。(b/158699265)

2.3.0-alpha05 版本

2020 年 6 月 24 日

androidx.lifecycle:lifecycle-*:2.3.0-alpha05 發布。2.3.0-alpha05 版本包含這些修訂版本。

修正錯誤

  • LiveData 現在能夠更妥善地處理對重新進入案例,避免重複呼叫 onActive()onInactive()。(b/157840298)
  • 修正了 Lint 檢查功能在 Android Studio 4.1 Canary 6 以上版本中無法執行的問題。(aosp/1331903)

2.3.0-alpha04 版本

2020 年 6 月 10 日

androidx.lifecycle:lifecycle-*:2.3.0-alpha04 發布。2.3.0-alpha04 版本包含這些修訂版本。

修正錯誤

  • 修正了 NonNullableMutableLiveData Lint 檢查中的異常終止問題。(b/157294666)
  • 針對採用非空值類參數的 MutableLiveData 設定了 null 值的案例,NonNullableMutableLiveData Lint 檢查功能現在的涵蓋量大幅提升。(b/156002218)

2.3.0-alpha03 版本

2020 年 5 月 20 日

androidx.lifecycle:lifecycle-*:2.3.0-alpha03 發布。2.3.0-alpha03 版本包含這些修訂版本。

新功能

  • SavedStateHandle 現在支援延遲序列化,做法是讓您針對特定鍵呼叫 setSavedStateProvider(),這樣就能在系統要求 SavedStateHandle 儲存其狀態時,提供可在 saveState() 中取得回呼的 SavedStateProvider。(b/155106862)
  • 全新的 ViewTreeViewModelStoreOwner.get(View) API 可讓您依據 ViewModelStoreOwner 執行個體,擷取其所屬的 View。您必須升級至 Activity 1.2.0-alpha05Fragment 1.3.0-alpha05AppCompat 1.3.0-alpha01,才能正確填入這項資訊。在 lifecycle-viewmodel-ktx 中新增了 findViewModelStoreOwner() Kotlin 擴充功能。(aosp/1295522)

修正錯誤

  • 修正了一項導致 Lifecycle 2.3.0-alpha01 中推出的 MutableLiveData Lint 檢查功能無法與 lifecycle-livedata-core-ktx 構件一起發布的問題。(b/155323109)

2.3.0-alpha02 版本

2020 年 4 月 29 日

androidx.lifecycle:lifecycle-*:2.3.0-alpha02 發布。2.3.0-alpha02 版本包含這些修訂版本。

API 異動

  • SavedStateViewModelFactory 現在可讓您將空值 Application 傳遞至其建構函式,針對目前沒有應用程式且不需用到 AndroidViewModel 支援的案例提供更完善的支援。(aosp/1285740)

修正錯誤

  • 防止 API 28 以下的裝置發生類別驗證失敗的情況,藉此提高冷啟動成效。(aosp/1282118)

2.3.0-alpha01 版本

2020 年 3 月 4 日

androidx.lifecycle:lifecycle-*:2.3.0-alpha01 發布。2.3.0-alpha01 版本包含這些修訂版本。

新功能

  • 全新的 ViewTreeLifecycleOwner.get(View) API 可讓您依據 LifecycleOwner 執行個體,擷取其所屬的 View。您必須升級至 Activity 1.2.0-alpha01Fragment 1.3.0-alpha01,才能正確填入這項資訊。您可以透過 lifecycle-runtime-ktx 使用 findViewTreeLifecycleOwner Kotlin 擴充功能。(aosp/1182361aosp/1182956)
  • 新增一項 Lint 檢查功能,可在您為 Kotlin 中定義為非空值的 MutableLiveData 設定 null 值時發出警告。這項檢查功能會在您使用 livedata-core-ktxlivedata-ktx 構件時提供。(aosp/1154723aosp/1159092)
  • 推出了新的 lifecycle-runtime-testing 構件,其提供的 TestLifecycleOwner 會導入 LifecycleOwner 並提供執行緒安全的可變動 Lifecycle。(aosp/1242438)

修正錯誤

  • lifecycle-runtime 構件現在擁有專屬的套件名稱。(aosp/1187196)

2.2.0 版本

ViewModel-Savedstate 2.2.0 版本

2020 年 2 月 5 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0 發布。2.2.0 版本包含這些修訂版本。

Lifecycle ViewModel SavedState 現在與其他 Lifecycle 構件共用同一個版本。2.2.0 的行為與 1.0.0 的行為完全相同。

2.2.0 版本

2020 年 1 月 22 日

發佈 androidx.lifecycle:lifecycle-*:2.2.02.2.0 版本包含這些修訂版本

自 2.1.0 版以來的重要異動

  • Lifecycle 協同程式整合:新的 lifecycle-runtime-ktx 構件能夠將 Lifecycle 與 Kotlin 協同程式進行整合。lifecycle-livedata-ktx 也經由拓展妥善運用協同程式的優勢。詳情請參閱使用 Kotlin 協同程式搭配架構元件一文。
  • 淘汰 ViewModelProviders.of():淘汰了 ViewModelProviders.of()。使用 Fragment 1.2.0 時,您可以將 FragmentFragmentActivity 傳送至新的 ViewModelProvider(ViewModelStoreOwner) 建構函式,以達到相同作用。
  • 淘汰 lifecycle-extensions 構件:隨著上述 ViewModelProviders.of() 的淘汰,這個版本也淘汰了 lifecycle-extensions 中的最後一個 API,這個構件現應視作完全淘汰。我們強烈建議將依附元件設為您需要的特定 Lifecycle 構件 (例如,使用 LifecycleService 時請依附於 lifecycle-service;使用 ProcessLifecycleOwner 時則依附於 lifecycle-process),而不要使用 lifecycle-extensions,原因是 lifecycle-extensions 日後並不會推出 2.3.0 版本。
  • Gradle 遞增註解處理工具:根據預設,Lifecycle 的註解處理工具為遞增模式。如果應用程式是以 Java 8 程式設計語言編寫,您可以改用 DefautLifecycleObserver;如果是以 Java 7 程式設計語言編寫,則可以使用 LifecycleEventObserver

2.2.0-rc03 版本

2019 年 12 月 4 日

發佈 androidx.lifecycle:lifecycle-*:2.2.0-rc032.2.0-rc03 版本包含這些修訂版本。

修正錯誤

  • 修正了儲存在 ViewModelStore 中的模擬 ViewModel 後來經由預設工廠查詢調用時出現的失敗錯誤。
  • 修正了 Dispatchers.Main.immediate 在相應的生命週期事件期間,於 launchWhenCreated 和類似方法中同時遭到呼叫的使用方式。(aosp/1156203)

外界貢獻

  • 感謝 Anders Järleberg 協助修正問題!(aosp/1156203)
  • 感謝 Jetbrains 的 Vsevolod Tolstopyatov 審查內嵌執行作業的導入結果。

依附元件變更

  • Lifecycle 擴充功能現在依附於 Fragment 1.2.0-rc03

2.2.0-rc02 版本

2019 年 11 月 7 日

發佈 androidx.lifecycle:lifecycle-*:2.2.0-rc022.2.0-rc02 版本包含這些修訂版本。

修正錯誤

  • 修正程式庫 ProGuard 設定中的錯誤;受到該錯誤影響的裝置為目標 API 級別在 29 以下,但搭載的 API 級別在 28 以上的裝置。(b/142778206)

2.2.0-rc01 版本

2019 年 10 月 23 日

androidx.lifecycle:lifecycle-*:2.2.0-rc01 發布。2.2.0-rc01 版本包含這些修訂版本。

修正錯誤

  • 修正了 launchWhenCreated 和相關方法因使用 Dispatchers.Main (而非 Dispatchers.Main.immediate),導致執行時間比相關聯的 Lifecycle 方法晚一拍的問題。(aosp/1145596)

外界貢獻

2.2.0-beta01 版本

2019 年 10 月 9 日

發佈 androidx.lifecycle:lifecycle-*:2.2.0-beta012.2.0-beta01 版本包含這些修訂版本。

修正錯誤

  • 修正了 Lifecycle 2.2.0-alpha05 中對 ProcessLifecycleOwner 排序造成影響,導致活動的 LifecycleOwner 在 Android 10 裝置上移至已啟動與已恢復狀態的迴歸問題。(aosp/1128132)
  • 修正了 Lifecycle 2.2.0-alpha05 中引起的迴歸問題;在使用 lifecycle-process2.0.02.1.0 版本時,該問題會導致 NullPointerException。(b/141536990)

2.2.0-alpha05 版本

2019 年 9 月 18 日

androidx.lifecycle:lifecycle-*:2.2.0-alpha05 發布。2.2.0-alpha05 版本包含這些修訂版本。

修正錯誤

  • 修正協同程式即時資料建構工具中的競爭狀況。b/140249349

2.2.0-alpha04 版本

2019 年 9 月 5 日

發佈 androidx.lifecycle:lifecycle-*:2.2.0-alpha04。您可以在這裡查看這個版本包含的修訂版本。

新功能

  • lifecycleScopewhenCreatedwhenStartedwhenResumedviewModelScopeliveData 的基礎實作現在均使用 Dispatchers.Main.immediate,而非 Dispatchers.Main。(b/139740492)

外界貢獻

  • 感謝 Nicklas Ansman 協助遷移至 Dispatchers.Main.immediate!(aosp/1106073)

2.2.0-alpha03 版本

2019 年 8 月 7 日

發佈 androidx.lifecycle:lifecycle-*:2.2.0-alpha03。您可以在這裡查看這個版本包含的修訂版本。

新功能

API 變更

  • 淘汰了 ViewModelProviders.of()。您可以將 FragmentFragmentActivity 傳送至新的 ViewModelProvider(ViewModelStoreOwner) 建構函式,以達到相同作用。(aosp/1009889)

2.2.0-alpha02 版本

2019 年 7 月 2 日

發布 androidx.lifecycle:*:2.2.0-alpha02。您可以在這裡查看這個版本包含的修訂版本。

API 變更

  • LiveDataScope.initialValue 替換成了 LiveDataScope.latestValue,可追蹤 liveData 區塊目前發送的值。
  • liveData 建構工具新增了多載,能夠以 Duration 類型接收 timeout 參數。

2.2.0-alpha01 版本

2019 年 5 月 7 日

發佈 androidx.lifecycle:*:2.2.0-alpha01。您可以在這裡查看這個版本包含的修訂版本。

新功能

  • 這個版本新增多項功能,可為 Lifecycle 和 LiveData 的 Kotlin 協同程式提供支援。如要查看相關詳細說明文件,請造訪這裡

ViewModel-SavedState 1.0.0 版本

1.0.0 版本

2020 年 1 月 22 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0 發布。1.0.0 版本包含這些修訂版本

1.0.0 版中的重要功能

  • 新增了 SavedStateHandle 類別。這可讓 ViewModel 類別存取已儲存的狀態並提供相關資訊。這個物件可透過 ViewModel 類別的建構函式接收,而 Fragments 和 AppCompatActivity 預設提供的工廠會自動植入 SavedStateHandle
  • 新增了 AbstractSavedStateViewModelFactory,可讓您為 ViewModel 建立自訂工廠,並授權其存取 SavedStateHandle

ViewModel-Savedstate 1.0.0-rc03 版本

2019 年 12 月 4 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03 發布。1.0.0-rc03 版本包含這些修訂版本。

依附元件變更

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

Viewmodel-Savedstate 1.0.0-rc02 版本

2019 年 11 月 7 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc02 發布。1.0.0-rc02 版本包含這些修訂版本

依附元件變更

  • 現在依附於 Lifecycle 2.2.0-rc02

ViewModel-SavedState 1.0.0-rc01 版本

2019 年 10 月 23 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc01 發布,且自 1.0.0-beta01 版以來皆無異動。1.0.0-rc01 版本包含這些修訂版本

ViewModel-Savedstate 1.0.0-beta01 版本

2019 年 10 月 9 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-beta01 發布。1.0.0-beta01 版本包含這些修訂版本

修正錯誤

  • 修正了在 Activity.onActivityResult() 中首次存取 SavedState ViewModel 時會導致 IllegalStateException 的問題。(b/139093676)
  • 修正了使用 AbstractSavedStateViewModelFactory 時發生的 IllegalStateException。(b/141225984)

ViewModel-SavedState 1.0.0-alpha05 版本

2019 年 9 月 18 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha05 發布。1.0.0-alpha05 版本包含這些修訂版本

API 變更

  • SavedStateViewModelFactory 不會再擴充 AbstractSavedStateViewModelFactory,且 API 只會為提出要求的 ViewModel 建立 SavedStateHandle (aosp/1113593)

ViewModel-SavedState 1.0.0-alpha03 版本

2019 年 8 月 7 日

發佈 androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha03。您可以在這裡查看這個版本包含的修訂版本。

破壞性變更

ViewModel-SavedState 1.0.0-alpha02 版本

2019 年 7 月 2 日

發布 androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha02。您可以在這裡查看這個版本包含的修訂版本。

新功能

  • 新增了可接受預設值的 SavedStateHandle.getLiveData() 多載。

API 異動

  • SavedStateVMFactory 已重新命名為 SavedStateViewModelFactory
  • AbstractSavedStateVMFactory 已重新命名為 AbstractSavedStateViewModelFactory

ViewModel-Savedstate 1.0.0-alpha01 版本

2019 年 3 月 13 日

androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01 發布。您可以在這裡查看這個初始版本的完整修訂版本記錄。

新功能

  • ViewModels 現在可為 savedstate 提供相關資訊。為此,請使用新推出的 ViewModel 工廠 SavedStateVMFactory,ViewModel 應該有一個可接收 SavedStateHandle 物件做為參數的建構函式。

2.1.0 版本

自 2.0.0 版本以來的重要異動

  • 新增了 LifecycleEventObserver,適用於需要生命週期事件串流的案例。這是公用 API,而非隱藏的 GenericLifecycleObserver 類別。
  • 新增了適用於 LiveData.observe 方法和 Transformations.* 方法的 ktx 擴充功能。
  • 新增了 Transformations.distinctUntilChanged,其建立的新 LiveData 物件會等到來源 LiveData 的值出現變更時才發送值。
  • 新增擴充功能屬性 ViewModel.viewModelScope,在 ViewModel 中提供協同程式支援。

2.1.0 版本

2019 年 9 月 5 日

發佈 androidx.lifecycle:lifecycle-*:2.1.0。您可以在這裡查看這個版本包含的修訂版本。

2.1.0-rc01 版本

2019 年 7 月 2 日

androidx.lifecycle:*:2.1.0-rc01 發布,且自 androidx.lifecycle:*:2.1.0-beta01 版以來皆無異動。您可以前往這裡查看這個版本包含的修訂版本。

2.1.0-beta01 版本

2019 年 5 月 7 日

發佈 androidx.lifecycle:*:2.1.0-beta01。您可以在這裡查看這個版本包含的修訂版本。

新功能

  • Lifecycle 升級至 Beta 版:先前在 Alpha 版中推出的 API,例如用於轉換與觀測的 liveData 擴充功能函式)、採用屬性委派檔的 ViewModel 初始化等功能皆已進入穩定狀態,不會有變更。

2.1.0-alpha04 版本

2019 年 4 月 3 日

發佈 androidx.lifecycle:*:2.1.0-alpha04。您可以在這裡查看這個版本包含的修訂版本。

API 變更

  • 破壞性變更:by viewModels()by activityViewModels() 的基礎 API 已改為直接支援 ViewModelStore,而不只是 ViewModelStoreOwner。(aosp/932932)

2.1.0-alpha03 版本

2019 年 3 月 13 日

androidx.lifecycle:*:2.1.0-alpha03 發布。您可以前往這裡查看這個版本包含的修訂版本完整清單。

API 變更

  • 移除了 ViewModelProvider.KeyedFactoryViewModelProvider.Factory 以外的第二個介面無法在 Kotlin by viewmodels {} 中透過屬性委派與新功能妥善組合。(aosp/914133)

2.1.0-alpha02 版本

2019 年 1 月 30 日

androidx.lifecycle 2.1.0-alpha02 發布。

API 變更

  • LifecycleRegistry 現在包含 setCurrentState() 方法,用於取代目前已淘汰的 setState() 方法。(aosp/880715)

修正錯誤

  • 修正了模擬 ViewModel 執行個體在所屬的 ViewModelStore 遭到清除時會異常終止的問題。b/122273087

2.1.0-alpha01 版本

2018 年 12 月 17 日

androidx.lifecycle 2.1.0-alpha01 發布。

新功能

  • 新增了 LifecycleEventObserver,適用於需要生命週期事件串流的案例。這是公用 API,而非隱藏的 GenericLifecycleObserver 類別。
  • 新增了適用於 LiveData.observe 方法和 Transformations.* 方法的 ktx 擴充功能。
  • 新增了 Transformations.distinctUntilChanged 方法,其建立的新 LiveData 物件會等到來源 LiveData 的值出現變更時才發送值。
  • 新增擴充功能屬性 ViewModel.viewModelScope,在 ViewModel 中提供協同程式支援。
  • 新增了 ViewModelProvider.KeyedFactory 這個適用於 ViewModel 的工廠,可在 create 方法中接收 keyClass

2.0.0 版本

2.0.0 版本

2018 年 9 月 21 日

Lifecycle 2.0.0 發布,修正 ViewModel 中 2.0.0-rc01 的一項錯誤。

修正錯誤

  • 修正錯誤移除建構函式的 ViewModel ProGuard 規則 b/112230489

2.0.0-beta01 版本

2018 年 7 月 2 日

修正錯誤

  • 修正了 LifecycleObserver ProGuard 規則,僅保留實作項目,不保留子介面 b/71389427
  • 修正了 ViewModel ProGuard 規則,以允許模糊處理與縮小操作

AndroidX 之前的版本

針對 AndroidX 之前的 Lifecycle 版本 (如下所示),請加入下列依附元件:

dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

1.1.1 版本

2018 年 3 月 21 日

只有一項小幅異動:android.arch.core.util.Functionarch:runtime 移至 arch:common。這樣一來,即使沒有執行階段依附元件,也能使用該函式,例如在下方的 paging:common 中使用。

lifecycle:commonlifecycle:runtime 的依附元件,因此這項變更不會直接影響 lifecycle:runtime,只會影響 Paging 等直接依附於 lifecycle:common 的模組。

1.1.0 版本

2018 年 1 月 22 日

包裝變更

現在提供縮小許多的新型依附元件:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

API 異動

  • 現在移除了已淘汰的 LifecycleActivityLifecycleFragment,請改用 FragmentActivityAppCompatActivity 或支援 Fragment
  • ViewModelProvidersViewModelStores 新增了 @NonNull 註解。
  • 淘汰了 ViewModelProviders 建構函式,請直接改用其靜態方法。
  • 淘汰了 ViewModelProviders.DefaultFactory,請改用 ViewModelProvider.AndroidViewModelFactory
  • 新增了靜態的 ViewModelProvider.AndroidViewModelFactory.getInstance(Application) 方法,以擷取適合用於建立 ViewModelAndroidViewModel 執行個體的靜態 Factory