Lifecycle的基本使用

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

转载请注明链接: https://blog.csdn.net/feather_wch/article/details/88630095

谷歌的架构组件 Lifecycle的基本使用

Lifecycle的基本使用

版本号:2019-03-22(11:00)


简介

1、Lifecycle组件是在其他组件的生命周期状态发生改变时,产生相应行为的一种组件。

2、Lifecycle能帮助产生更好组织且更轻量级的代码,便于维护。

3、在不使用Lifecycle时,常规的生命周期处理的缺点是什么?

  1. 常规方法是在Activity和Fragment的生命周期方法里面去实现独立组件的行为
  2. 这种模式会导致代码组织性差
  3. 增生更多的错误

4、Lifecycle的好处是什么?

  1. 通过使用可感知生命周期的组件,可以将生命周期方法中关于这些组件的代码,移动到组件的内部
  2. 通过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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值