专栏名称: 刘望舒
腾讯云最具价值专家
目录
相关文章推荐
复利大王  ·  江浙沪美女留子回国下嫁怀孕后悔 ·  17 小时前  
复利大王  ·  某航离谱瓜! ·  17 小时前  
复利大王  ·  某一线女网红下海? ·  17 小时前  
复利大王  ·  好牛的幼儿园 ·  昨天  
复利大王  ·  老同学中捞一捞能不能找到免费P友 ·  昨天  
51好读  ›  专栏  ›  刘望舒

Android Jetpack架构组件(二)一文带你了解Lifecycle(使用篇)

刘望舒  · 掘金  · android  · 2019-10-25 04:18

正文

请到「今天看啥」查看全文


extends AppCompatActivity { private MyPresenter myPresenter; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); myPresenter = new MyPresenter(); } @Override protected void onResume () { super .onResume(); myPresenter.onResume(); } @Override protected void onPause () { super .onPause(); myPresenter.onPause(); } } class MyPresenter { void onResume () { ... } void onPause () { ... } } 复制代码

这两个例子的写法已经很普遍了,实现起来也不难,但实际开发中,可能会有多个组件在Activity的生命周期中进行回调,这样Activity的生命周期的方法中可能就需要放大量的代码,这就使得它们难以维护。 还有一个问题是,如果我们在组件中做了耗时操作(比如在onStart方法),这种写法就无法保证组件在Activity或者Fragment停止之前完成启动。 因此我们需要一个能管理Activity和Fragment的生命周期的库,这个库就是Lifecycle。

2.如何使用Lifecycle

分别来介绍下依赖Lifecycle库和Lifecycle基本用法。

2.1 依赖Lifecycle库

官网给出的依赖代码如下所示:

dependencies {
    def lifecycle_version = "2.0.0"

    // ViewModel and LiveData
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // For Kotlin use lifecycle-viewmodel-ktx
    // alternatively - just LiveData
    implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData). Some UI
    //     AndroidX libraries use this lightweight import for Lifecycle
    implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

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

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

    // optional - Test helpers for LiveData
    testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
}
复制代码

官网用的是AndroidX,因为使用AndroidX,可能会产生一些迁移的问题,这里的举例就不使用AndroidX,而是使用lifecycleandroid.arch.lifecycle库,如下所示。

dependencies {
    def lifecycle_version = "1.1.1"

    // 包含ViewModel和LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // 仅仅包含ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // 仅仅包含LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"






请到「今天看啥」查看全文


推荐文章
复利大王  ·  江浙沪美女留子回国下嫁怀孕后悔
17 小时前
复利大王  ·  某航离谱瓜!
17 小时前
复利大王  ·  某一线女网红下海?
17 小时前
复利大王  ·  好牛的幼儿园
昨天
水库论坛  ·  正本清源比特币(一) #F1250
7 年前