转载请注明链接: https://blog.csdn.net/feather_wch/article/details/88630095
谷歌的架构组件 Lifecycle的基本使用
Lifecycle的基本使用
版本号:2019-03-22(11:00)
文章目录
简介
1、Lifecycle组件是在其他组件的生命周期状态发生改变时,产生相应行为的一种组件。
2、Lifecycle能帮助产生更好组织且更轻量级的代码,便于维护。
3、在不使用Lifecycle时,常规的生命周期处理的缺点是什么?
- 常规方法是在Activity和Fragment的生命周期方法里面去实现独立组件的行为
- 这种模式会导致代码组织性差
- 增生更多的错误
4、Lifecycle的好处是什么?
- 通过使用可感知生命周期的组件,可以将生命周期方法中关于这些组件的代码,移动到组件的内部
- 通过
android.arch.lifecycle
提供的内容,可以让组件主动调节自身的行为
,根据activity/fragment当前的生命周期状态
进行调整。
5、几乎所有app组件都可以和Lifecycle关联起来,这些都是由操作系统或者运行在程序中的FrameWork层代码进行支持的。
使用Lifecycle能减少内存泄漏和系统崩溃的可能性
Lifecycle集成
1、Lifecycle的集成只需要在app的build.gradle中配置
// 引入lifecycle
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
Lifecycle的使用
原Activity中生命周期处理的代码
1、现在有一个功能是读取当前设备的位置。用常规的方法处理。
1-定位功能,start()连接到系统定位服务,stop()断开和系统定位服务的连接
class MyLocationListener {
public MyLocationListener(Context context, Callback callback) {
// ...
}
void start() {
// connect to system location service
}
void stop() {
// disconnect from system location service
}
}
2-Activity中使用该功能。Activity的生命周期和定位功能紧密相连
class MyActivity extends AppCompatActivity {
private MyLocationListener myLocationListener;
@Override
public void onCreate(...) {
myLocationListener = new MyLocationListener(this, (location) -> {
// update UI
});
}
@Override
public void onStart() {
super.onStart();
myLocationListener.start