写了一个测试的 Activity
对onCreate  onStart  onStop onResume onPause onSaveInstanceState  onRestoreInstanceState 进行了重载然后在我的xml里面有一个edittext  我将edittext里面的内容写为“test”
然后我按Home键
调用的顺序是 onSaveInstanceState - onPause - onStop  
再次启动这个Activity的时候,调用的顺序是onStart-onResume   edittext里面的内容还是我写的  test问题来了:
为什么edittext的内容还会是 test?虽然有看到调用了 onSaveInstanceState ,但是并没有看到调用 onCreate 或者 onRestoreInstanceState 将 onSaveInstanceState保存的相关数据传进来啊。

解决方案 »

  1.   

    系统自动保存的,你看下sdk代码就明白了
      

  2.   

    按下home键,其实activity还在运行,只是在后台而已,所以相关的数据还在,因为他一直在运行
    你可以换个思维想一下,如果这个activity一直在前端运行,而你又没有主动修改edittext的内容,那么edittext的内容是不会变的
      

  3.   

    那为什么要调用  onSaveInstanceState ,有何用意呢?  我可以利用这个function做什么东西呢?
      

  4.   

    onSaveInstanceState 主要是保存activity的一些用户界面状态(比如edittext里面的内容),
    如果这个activity 因为你按home键而转到后台运行,有一种情况,这个后台的activity可能因为系统回收资源被杀掉(java机制),那么这时候再启动这个activity,就会用到onSaveInstanceState 保存的数据了,
    你可以重写onSaveInstanceState 来保存额外的没有被自动保存的信息。
      

  5.   

    如果你把edit中的内容改掉test->aaa,你在看看重启activity后恐怕不是aaa了吧
      

  6.   

    我看到有说   onSaveInstanceState  会在我的activity被系统kill的时候调用的
      

  7.   

    对啊,onSaveInstanceState被系统kill时会被调用,还有一种情况就是改变纵横屏幕时也会调用,但是按back键关闭或电源键或home键都不会自动调用