没有效果图的文章简直就是扯淡。。。。。额,这次确实扯淡了,因为没有效果图
为什么没有效果图呢,大家先听我来说说Lifecycle是什么东西?它的作用是什么?为什么会创造Lifecycle?明白了这三个,你就会知道小口口为什么这次不贴效果图了。
- 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类里面都有什么 我们可以看到,它拥有自己的一套生命周期方法,而这一套方法与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
强烈推荐大家看看Google官方的Jetpack使用指南,可以详细了解一下Jetpack。
Q:486789970(QQ现在很少用) V:18588400509(如果着急,可以直接加微信) email:mr.cai_cai@foxmail.com
如果有什么问题,欢迎大家指导。并相互联系,希望能够通过文章互相学习。
---财财亲笔
|