好久没有写技术博客了,前两篇博客写的都是一些自己的所见所闻和心里感受,今天说一说Android中的Activity的生命周期,此篇文章使用HOME键作为测试。我是真机测试,机型是三星I9260,系统是Android4.1,下面进入正题。
其实在很久以前就有人写过Activity生命周期,但是我看了一下,基本上都是千篇一律,给你一张图然后上面有各种小箭头和圆圈,看着就很高深的样子,这样没有几个人会耐心看下去。今天我做了一个很小的程序,就是写了一下Activity的七个小方法。代码就贴在下面,可以略过。
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 Log.v("onCreate", "onCreate()"); 5 setContentView(R.layout.activity_main); 6 } 7 8 @Override 9 protected void onDestroy() {10 // TODO Auto-generated method stub11 super.onDestroy();12 Log.v("onDestroy", "onDestroy()");13 }14 15 @Override16 protected void onPause() {17 // TODO Auto-generated method stub18 super.onPause();19 Log.v("onPause", "onPause()");20 }21 22 @Override23 protected void onRestart() {24 // TODO Auto-generated method stub25 super.onRestart();26 Log.v("onRestart", "onRestart()");27 }28 29 @Override30 protected void onResume() {31 // TODO Auto-generated method stub32 super.onResume();33 Log.v("onResume", "onResume()");34 }35 36 @Override37 protected void onStart() {38 // TODO Auto-generated method stub39 super.onStart();40 Log.v("onStart", "onStart()");41 }42 43 @Override44 protected void onStop() {45 // TODO Auto-generated method stub46 super.onStop();47 Log.v("onStop", "onStop()");48 }
好了,让我运行一下这个小程序,运行成功后在LogCat中打印这样的信息。
11-24 16:29:30.875: V/onCreate(16405): onCreate()
11-24 16:29:30.914: V/onStart(16405): onStart()11-24 16:29:30.914: V/onResume(16405): onResume()然后呢,我按了一下我小三的HOME键,LogCat会出现下面的信息。
11-24 16:32:33.906: V/onPause(16405): onPause()
11-24 16:32:34.586: V/onStop(16405): onStop()接着,我点击我的应用程序,重新进入到应用中,LogCat出现下面的信息。
11-24 16:33:48.633: V/onRestart(16405): onRestart()
11-24 16:33:48.633: V/onStart(16405): onStart()11-24 16:33:48.633: V/onResume(16405): onResume()最后,我觉得这个程序有些烂,于是乎我长按HOME键然后将其结束掉,LogCat会打印下面的信息。
11-24 16:35:14.266: V/onDestroy(16405): onDestroy()
好了,上面只是一些打印信息,下面开始讲解一下Activity的生命周期,在此我摘录一段网上比较好的话。
onCreate:在这里创建界面,做一些数据的初始化工作。
onStart:用户可见但是不可交互。
onResume:用户可见而且可交互。
onPause:可见但是不可交互,系统会停止动画等消耗CPU的事情。
onStop:变得不可见。
onDestroy:被干掉。
通过上面几句话,其实你可以自己明白这个过程是怎么回事了。在此我就不多说了,大家可以自己继续探讨Activity的奥秘。