安卓Jetpack之Lifecycle的使用及原理刨析

没有效果图的文章简直就是扯淡。。。。。额,这次确实扯淡了,因为没有效果图

    • 废话不多说,上代码:
    • Google推荐我们尽量使用生命周期感知型组件LifeCycle
    • LifeCycle---Google官方使用指南:[https://developer.android.com/topic/libraries/architecture/lifecycle#implementing-lco](https://developer.android.com/topic/libraries/architecture/lifecycle#implementing-lco)
    • 强烈推荐大家看看Google官方的Jetpack使用指南,可以详细了解一下Jetpack。
    • **如果有什么问题,欢迎大家指导。并相互联系,希望能够通过文章互相学习。**

为什么没有效果图呢,大家先听我来说说Lifecycle是什么东西?它的作用是什么?为什么会创造Lifecycle?明白了这三个,你就会知道小口口为什么这次不贴效果图了。

安卓Jetpack之Lifecycle的使用及原理刨析_第1张图片

  • Lifecycle是什么?
    Lifecycle是Android Jetpack 的一部分。Google称它为构建生命周期感知型组件,可以根据 Activity 或 Fragment 的当前生命周期状态调整行为。你也可以理解它为一个具有生命周期的组件。
  • Lifecycle的作用是什么?
    Lifecycle可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。帮助您编写出更有条理且更精简更易于维护的代码。这句话意思是说我的作用就是当我和(Activity 或者 Fragment)关联之后,它俩有的我也有,生命周期与他俩一样。跟个土财主一样自给自足,完全脱离它俩。
  • 为什么会创造Lifecycle?
    比如:onResume()方法中开启一个定时器,在onStop方法中停止这个定时器。这种方式很常见。但是,如果onResume或者onStop的代码量增大之后,这种模式会导致代码条理性很差而且会扩散错误。如果使用Lifecycle,就可以将依赖Lifecycle的代码从生命周期方法移入自定义的Lifecycle里面中。这样你的Fragment或者Activity代码就不会很臃肿啦。

所以Lifecycle确切的来说没有什么效果,但是从架构上让我们的代码变得更简洁更易于管理啦。

废话不多说,上代码:

首先,因为新版的Android Studio创建项目时会自动引入Lifecycle依赖

dependencies {
    implementation 'androidx.appcompat:appcompat:1.4.2'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.lifecycle:lifecycle-process:2.5.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

首先我们先自定义一个LifeCycle。

public class LifeCycleHandler implements DefaultLifecycleObserver {

}
注:大家可以看到我自定义的这个实现了DefaultLifecycleObserver这个类,为什么要实现?有什么作用?

那我们就来看看DefaultLifecycleObserver类里面都有什么
安卓Jetpack之Lifecycle的使用及原理刨析_第2张图片
我们可以看到,它拥有自己的一套生命周期方法,而这一套方法与fragment或者activity的生命周期相互绑定。所以,我们的自定义LifeCycle里面可以这样写:

package com.jetpack.lifecycledemo;

import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;

public class LifeCycleHandler implements DefaultLifecycleObserver {

    @Override
    public void onCreate(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onCreate(owner);
        Log.e("============", "onCreate");
    }

    @Override
    public void onResume(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onResume(owner);
        Log.e("============", "onResume");
    }

    @Override
    public void onStart(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onStart(owner);
        Log.e("============", "onStart");
    }

    @Override
    public void onPause(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onPause(owner);
        Log.e("============", "onPause");
    }

    @Override
    public void onStop(@NonNull LifecycleOwner owner) {
        DefaultLifecycleObserver.super.onStop(owner);
        Log.e("============", "onStop");
    }

}
注:把它当作一个独立的碎片去处理。前提是要与依赖的组件相互绑定。

既然说到了绑定。怎么绑定呢?很简单:在activity里面添加一句话

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ProcessLifecycleOwner.get().getLifecycle().addObserver(new LifeCycleHandler());
    }

}

我运行下,你们看看效果:
在这里插入图片描述

Google推荐我们尽量使用生命周期感知型组件LifeCycle

安卓Jetpack之Lifecycle的使用及原理刨析_第3张图片

LifeCycle—Google官方使用指南:https://developer.android.com/topic/libraries/architecture/lifecycle#implementing-lco

强烈推荐大家看看Google官方的Jetpack使用指南,可以详细了解一下Jetpack。

Q:486789970(QQ现在很少用)
V:18588400509(如果着急,可以直接加微信)
email:[email protected]

如果有什么问题,欢迎大家指导。并相互联系,希望能够通过文章互相学习。

											                               	---财财亲笔

你可能感兴趣的:(笔记,android,jetpack,Lifecycle)