Android jetpack之lifecycle使用

使用lifecycle的原因:activity 和fragment 是有声明周期的,有时候,我们的很多操作需要写在声明周期的方法中,比如,下载,文件操作等,这样很多情况下回导致,我们在activity中的声明周期方法中写越来越多的代码,activity或者fragment 越来越臃肿,代码维护越来越困难。 使用lifecycle就可以很好的解决这类问题。lifecycle代码简洁,我们可以通过实现LifecycleObserver 接口,来监听声明周期,然后我们在activity和fragment中去注册监听。

1.build.gradle中添加implementation "androidx.lifecycle:lifecycle-runtime:2.2.0"

2.实现自定义的lifecycleObsever:

package com.jxd.studyone.lifecycle;

import android.util.Log;

import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;

public class MyLifecycle implements LifecycleObserver {
    Lifecycle mLifecycle;

    public MyLifecycle(Lifecycle lifecycle){
        mLifecycle = lifecycle;
        // 将自己加入到目标组件生命周期的监听列表中
        mLifecycle.addObserver(this);
    }

    public void removeLifeCycle(){
        mLifecycle.removeObserver(this);
    }

    // 在onCreate时调用
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    public void onLifeCreate(){
        Log.d("MyLifecycle", "onLifeCreate");
    }

    // 在onStart时调用
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onLifeStart(){
        Log.d("MyLifecycle", "onLifeStart");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void onLifeResume(){
        Log.d("MyLifecycle", "onLifeResume");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    public void onLifePause(){
        Log.d("MyLifecycle", "onLifePause");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void onLifeStop(){
        Log.d("MyLifecycle", "onLifeStop");
    }

    // 在onDetsory时调用
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    public void onLifeDestory(){
        Log.d("MyLifecycle", "onLifeDestory");
    }

}

3.在Activity中进行调用:

public class LifecycleActivity extends AppCompatActivity {
    private  MyLifecycle myLifecycle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lifecycle);
        myLifecycle = new MyLifecycle(getLifecycle());
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        myLifecycle.removeLifeCycle();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

景兄弟1366

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

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

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

打赏作者

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

抵扣说明:

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

余额充值