注意:因为onSaveInstanceState()不保证被调用,你应该用它仅用它记录临时状态关于你的activity--你应该永远不用它来存储永久性数据。代替的是,你应该用onPause()来存储永远性数据(例如保存在数据库中的数据)当用户离开activity。
一个好的方法测试你程序保存状态的功能是简单的转换设备以使屏幕方向改变。当屏幕方向变化,系统摧毁和重建activity为了应用可选的资源,适合新方向的。出于这个原因,你的activity恢复它的状态当创建的时候非常重要,因为用户通常转换屏幕在使用应用程序的时候。
【Handling configuratinon changes】
一些设备配置能在运行时改变(例如屏幕方向,键盘是否可用和语言)。当这样的变化发生时,Android重新开启运行中的Activity(onDestroy()被调用,然后onCreate()被调用)。重启行为被设计来帮助应用程序适应新的配置通过自动加载你的应用程序通过可选的资源,你提供的。如果你设置你的activity合适的操作这个事件,它将更有弹性对生命周期中无法预料的事件。
最好的方法操作配置变化,例如屏幕方向变,就是简单的预定义你应用程序的状态使用onSaveInstanceState()和onRestoreInstanceState()(或onCreate()),就像前面讨论的。
【Coordinating activities】
当一个activity启动另一个,他们都在体验生命周期转换。第一个activitypauses和stop(虽然,它不会stop如果他仍然可见在前景),另一个activity被创建。万一这些activities共离数据保存到磁盘或哪,那就让第一个activity不退出在另一个启动前就显得非常重要。相当的情况是,后一个进程启动覆盖了前一个停止的时候。
生周周期回调被良好的定义了,特别的当两个activities都在同一个进程,并且其中一个启动另一个。下面是操作顺序当activity A启动activity B:
1、Activity A 的onPause()的方法执行。
2、Activity B 的onCreate()、onStart()和onResume()方法执行,顺序的。(B现在拥有用户焦点)
3、如果A不再可见,它的onStop()方法执行。
这种生命期函数调用序列允许你从一个activity到另一个的信息转换。例如,如果你必须写入一个数据库,当第一个activity stop,以便让下一个activity能读它,那么你应该写入数据库在onPause()而不是onStop()。











