官方LifeCycle学习

主要针对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)

猜你喜欢

转载自blog.csdn.net/android_zhengyongbo/article/details/80521748