Activity的生命周期以及 退出时Bundle的数据保存

来源:互联网 发布:手机桌面软件下载 编辑:程序博客网 时间:2024/06/05 15:50
创建Activity 时,运行onCreat();


开始运行Activity 时,运行onStart();


该Activity处于最顶栈(即正在运行) 时,运行onResume();


启动另一个Activity 但 没有完全遮挡住原先这个Activity(例如启动一个dialog Activity)或者结束这个Activity 时,运行onPause();


启动另一个Activity而且完全覆盖原先这个Activity 或者 结束这个Activity 时,运行onStop();


Activity被销毁 时,运行onDestroy();


Activity从onStop()状态返回到界面时,运行onRestart();

如果该Activity已经被系统回收,则重新运作onCreat();


被系统回收时,Activity会先运行onSaveInstanceState(Bundle outState);

Bundle类型的参数是为了保存Activity被销毁前的参数,通常用方法outState.putString(key,String);其中key用字符串表示就可以了。
@Override
public void onSaveInstanceState(Bundle outStatePersistableBundle outPersistentState) {
    super.onSaveInstanceState(outStateoutPersistentState);
    String tempData = "Something you just typed";
    outState.putString("data_key",tempData);
}

而且要在创建Activity时的onCreat()里添加:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if(savedInstanceState !=null){
        String tempData = savedInstanceState.getString("data_key");
    }

}

当然bundle也可以与intent结合一起传递数据,就是把数据保存到Bundle对象中,再将Bundle对象保存到Intent对象中,再到其他的Activity时,取出Intent中的Bundle,再取出数据即可。
0 0