转载请注明链接: https://blog.youkuaiyun.com/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();
// manage other components that need to respond
<

本文介绍了谷歌的Lifecycle架构组件的基础使用,包括其集成方式、生命周期原理、如何监听组件状态以及如何作为LifecycleOwner。Lifecycle组件有助于改善代码组织,减少内存泄漏和系统崩溃。文章还详细讨论了在不同场景下如何使用Lifecycle,如处理位置服务、视频缓冲、网络连接和动画的生命周期,并强调了在Stop事件处理中的注意事项,避免在不适当的状态下修改UI。
最低0.47元/天 解锁文章
526

被折叠的 条评论
为什么被折叠?



