之前学的时候,视频或书上都是只有一个onCreate()方法,现在把其他的也补充上来。

    activity有7个状态,下面这个图是官方提供的activity的生命周期图:

    

1、onCreate() 他会在活动第一次被创建时调用,一般在这个方法里进行初始化操作,比如加载布局,绑定事件等。

2、onStart() 这个方法在活动由不可见变为可见时调用

3、 onResume() 这个方法在活动准备和用户交互时调用,这时活动一定处于栈顶

4、onPause() 这个方法在系统准备去启动或者恢复其他活动是调用。通常在这个方法中将一些消耗CPU的资源释放掉。

5、onStop() 这个方法在活动处于完全不可见时调用,他和onPause()方法的区别在与,如果启动的新活动是对话框式的活动,那么onPause()方法会得到执行,而onStop()方法不会被执行

6、onRestart() 这个方法在活动由停止状态变为运行状态时调用

7、onDestroy() 这个方法在活动销毁之前调用,之后活动变为销毁状态。


由官方的周期图可以看出,当活动处于stop状态时,有可能被销毁,那么之前输入的信息会变没,那么再次退回到该界面时,体验效果会变差。那么此时可以用onSaveInstanceState()回调方法,这个方法保证在活动被销毁之前调用。

    onSaveInstanceState()有一个Bundle参数,改类型的参数提供了一系列方法以供我们保存方法,如

        

    public void onSaveInstanceState(Bundle state){
        super.onSaveInstanceState(state);
        String message="save this message";
        state.putString("message",message);
    }

那么怎么获取之前销毁活动前存放的信息呢,大家可能注意到了onCreate(Bundle savedInstanceState)方法了,这个方法自带参数,就是我们之前存放的这个参数,从这里可以获取之前存放的信息。

    public void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    if(savedInstancedState!=null){

    String msg=savedInstanceState.getString("message");

    Log.d("onCreate",msg);

}

}