如果某一个代码逻辑和Activity生命周期相关,但是又不想将逻辑代码写到Activity中,那么就可以使用LifecycleObserver,
首先实现LifecycleObserver接口并写出自己需要的生命周期相关方法,并通过@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)注解来确定生命周期对应的方法
public class TestLifecycleObserver implements LifecycleObserver {
private static final String TAG = TestLifecycleObserver.class.getCanonicalName();
public TestLifecycleObserver() {
}
@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 onDestroy(){
Log.e(TAG, "onDestroy: ");
}
然后在对应的Activity中注册TestLifecycleObserver
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getLifecycle().addObserver(new TestLifecycleObserver());
}
注意:Lifecycle.Event中并没有onRestart方法对应的常量
网友评论