官方LifeCycle学习

本文介绍如何在Android应用中使用Java8特性及生命周期观察者模式来跟踪Activity的生命周期变化。通过实现DefaultLifecycleObserver接口并重写相应的方法,可以记录不同生命周期状态的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要针对Java8编译版本的学习记录

1 导入库

implementation "android.arch.lifecycle:common-java8:1.0.0"

2 创建Observer

import android.arch.lifecycle.DefaultLifecycleObserver;
import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleOwner;
import android.support.annotation.NonNull;
import android.util.Log;

public class LifecycleObserver implements DefaultLifecycleObserver{
    public void setLifecycle(Lifecycle lifecycle) {
        lifecycle.addObserver(this);
    }

    @Override
    public void onCreate(@NonNull LifecycleOwner owner) {
        Log.d("lifecycle",owner.getLifecycle().getCurrentState().name()+"");
    }

    @Override
    public void onStart(@NonNull LifecycleOwner owner) {
        Log.d("lifecycle",owner.getLifecycle().getCurrentState().name()+"");
    }

    @Override
    public void onResume(@NonNull LifecycleOwner owner) {
        Log.d("lifecycle",owner.getLifecycle().getCurrentState().name()+"");
    }

    @Override
    public void onPause(@NonNull LifecycleOwner owner) {
        Log.d("lifecycle",owner.getLifecycle().getCurrentState().name()+"");
    }

    @Override
    public void onStop(@NonNull LifecycleOwner owner) {
        Log.d("lifecycle",owner.getLifecycle().getCurrentState().name()+"");
    }

    @Override
    public void onDestroy(@NonNull LifecycleOwner owner) {
        Log.d("lifecycle",owner.getLifecycle().getCurrentState().name()+"");
    }
}

3 使用

import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleOwner;
import android.arch.lifecycle.LifecycleRegistry;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity implements LifecycleOwner{
    private LifecycleObserver lifecycleObserver=new LifecycleObserver();
    private LifecycleRegistry mLifecycleRegistry=new LifecycleRegistry(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE);
        lifecycleObserver.setLifecycle(getLifecycle());
    }

    @Override
    protected void onStart() {
        super.onStart();
        mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START);
    }
    @Override
    protected void onResume() {
        super.onResume();
        mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME);
    }
    @Override
    protected void onPause() {
        super.onPause();
        mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_PAUSE);
    }

    @Override
    protected void onStop() {
        super.onStop();
        mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY);
    }
    @NonNull
    @Override
    public Lifecycle getLifecycle() {
        return mLifecycleRegistry;
    }
}

4 有病(最低sdk编译版本要求是24,现在市面上24以下的手机系统还是很多的好吧)

 minSdkVersion 15
 targetSdkVersion 27


Default interface methods are only supported starting with Android N (--min-api 24)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值