爱上soso 发表于 2013-8-28 16:28

《Android Dev Guide》系列教程6:Android生命周期之activity生命周

>http://www.apkbus.com/data/attachment/forum/201105/06/172355ggsul644gleg5el6.jpg注意killable这列,它指明了进程在调用方法返回后是否可以被系统杀死,而不执行其他的代码。onPause(), onStop(), and onDestroy()这三个方法可以,因为onPause方法首先被执行,他是唯一一个一定会被调用的方法当进程被杀死时,但是onStop()和onDestroy()方法不会。因此,你可以在onPause()方法里保存一些连续的数据,例如编辑。killable这列被标记成no的方法,保护activity防止他们被调用时,被进程杀死。例如:一个activity是处于可被杀死的状态,当activity从onPause()方法跳转到onResume()方法时,在OnPause方法回调之前是不会被杀死的。正如后面的章节:进程和生命周期,一个没有定义为“killable”的activity仍然可以被系统结束,但这时会发生在特殊情况下,比如没有其他资源时。当系统(而不是用户)关闭一个activity来节省内存时,用户希望再次启动activity时会回到当时的状态。为了在activity被杀死之前捕获他的状态,你可以实现 onSaveInstanceState()方法,Android会在一个activity将要被关闭时调用这个方法,也就是在onPause()方法之前。他回传递给方法一个Bandle对象,你可以用key-value的方式保存你的数据。当activity再次运行时。这个Bandle对象会传递给onCreate()方法、onStart()方法、onRestoreInstanceState()方法。这几个方法都能重建当时的activity状态。不像onPause()和刚才讨论的其他几个方法,onSaveInstanceState()和onRestoreInstanceState()方法不是生命周期方法。不是不是总被调用。例如:Android在activity将要被系统销毁之前调用onSaveInstanceState()方法,当activity实例被用户的操作销毁时(例如按下Back键),是不会调用这个方法的。这种情况下没有理由保存他的状态。当一个activity启动了另一个activity,他们都经历了生命周期的转换。一个暂停了或者结束了,其他的activity启动。一种情况你可能需要调节这些activity:生命周期方法的回调顺序都是定义好的,尤其当两个activity在同一进程下:1.当前运行的activity的onPause()方法被调用。2.然后将要运行的activity的onCreate()、onStart()、onResume()方法被依次调用。3.然后,如果将要运行的activity不太可见,那么onstop()方法会被调用。   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
页: [1]
查看完整版本: 《Android Dev Guide》系列教程6:Android生命周期之activity生命周