當(dāng)前版本:
compileSdkVersion 29
implementation 'androidx.appcompat:appcompat:1.2.0'
第一步:創(chuàng)建Activity繼承AppCompatActivity類问裕。
public class LifeCycleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_life_cycle);
}
}
第二步:定義一個類MyLifeCycleObserver酥馍,實現(xiàn)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 由創(chuàng)建到銷毀亏狰,其生命周期方法的會被MyLifeCycleObserver觀察到快集,并依次執(zhí)行其生命周期相關(guān)聯(lián)的方法工秩。
運行結(jié)果如下
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
需要注意的是:
當(dāng)activity生命周期方法觸發(fā)時,會同時回調(diào)到這里
需要注意的是:
1.onCreate隧饼、onStart和onResume三個方法沈堡,會在對應(yīng)的Activity方法執(zhí)行完之后執(zhí)行,
而onPause燕雁、onStop和onDestory 三個方法诞丽,會在對應(yīng)的Activity方法之前執(zhí)行。
2.onAny方法會在LifecycleObserver的每個生命周期方法執(zhí)行之后調(diào)用拐格。