天天看点

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

创建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 outState , PersistableBundle outPersistentState) {

    super.onSaveInstanceState(outState , outPersistentState) ;

    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,再取出数据即可。

继续阅读