当前版本:
compileSdkVersion 29
implementation 'androidx.appcompat:appcompat:1.2.0'
第一步:创建Activity继承AppCompatActivity类。
public class LifeCycleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_life_cycle);
}
}
第二步:定义一个类MyLifeCycleObserver,实现LifecycleObserver接口。
在MyLifeCycleObserver中定义方法,加上@OnLifecycleEvent注解
import android.util.Log;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
public class MyLifeCycleObserver implements LifecycleObserver {
private static final String TAG = MyLifeCycleObserver.class.getSimpleName();
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void onCreate() {
Log.e(TAG, "onCreate");
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart() {
Log.e(TAG, "onStart");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume() {
Log.e(TAG, "onResume");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void onPause() {
Log.e(TAG, "onPause");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onStop() {
Log.e(TAG, "onStop");
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestory() {
Log.e(TAG, "onDestory");
}
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
public void onAny() {
Log.e(TAG, "onAny");
}
}
第三步:在Activity中,getLifecycle().addObserver(new MyLifeCycleObserver());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(TAG, "onCreate enable:"+enable());
setContentView(R.layout.activity_life_cycle);
getLifecycle().addObserver(new MyLifeCycleObserver());
}
MyLifeCycleObserver 由创建到销毁,其生命周期方法的会被MyLifeCycleObserver观察到,并依次执行其生命周期相关联的方法。
运行结果如下
2020-11-19 10:11:34.793 20430-20430/com.example.jetpack E/LifeCycleActivity: onCreate
2020-11-19 10:11:34.815 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onCreate
2020-11-19 10:11:34.815 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onAny
2020-11-19 10:11:34.818 20430-20430/com.example.jetpack E/LifeCycleActivity: onStart
2020-11-19 10:11:34.818 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onStart
2020-11-19 10:11:34.818 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onAny
2020-11-19 10:11:34.818 20430-20430/com.example.jetpack E/LifeCycleActivity: onResume
2020-11-19 10:11:34.818 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onResume
2020-11-19 10:11:34.819 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onAny
2020-11-19 10:11:38.678 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onPause
2020-11-19 10:11:38.678 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onAny
2020-11-19 10:11:38.678 20430-20430/com.example.jetpack E/LifeCycleActivity: onPause
2020-11-19 10:11:39.278 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onStop
2020-11-19 10:11:39.278 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onAny
2020-11-19 10:11:39.278 20430-20430/com.example.jetpack E/LifeCycleActivity: onStop
2020-11-19 10:11:39.279 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onDestory
2020-11-19 10:11:39.279 20430-20430/com.example.jetpack E/MyLifeCycleObserver: onAny
2020-11-19 10:11:39.280 20430-20430/com.example.jetpack E/LifeCycleActivity: onDestroy
需要注意的是:
当activity生命周期方法触发时,会同时回调到这里
需要注意的是:
1.onCreate、onStart和onResume三个方法,会在对应的Activity方法执行完之后执行,
而onPause、onStop和onDestory 三个方法,会在对应的Activity方法之前执行。
2.onAny方法会在LifecycleObserver的每个生命周期方法执行之后调用。