说到生命周期,对于程序员来说并不陌生。如果学过Servlet的朋友,就更不会陌生了饿,其实差不多,android的生命周期与Servlet的生命周期有相似之处 。

            Android的生命周期通常是有这样几个方法构成:onCreate()onStart()onPause()onResume()onStop()onDestroy()onRestart()等七个。也许大家还不清楚我们为什么要知道android的生命周期,也许大家这么认为,我管它是什么,我知道每次写Activity时总是在onCreate()中,最终也能把我的程序运行出来。这样认为也不错,但是要想在这android行业里深入发展的,我相信,只要是程序员,他肯定是先把生命周期弄清楚才吃得下饭,睡得安稳。

       Android手机是2010年开始火爆上市,因为它的炫,很快成了手机行业的老大,又因为是基于在java语言上开发的,当然啦,我这么说是不对的,了解android的朋友都是知道的,我说的只是android的顶层应用层,而下面还有基于Linux的内核层、系统运行层即我们所说的CC++库和Android运行库等构成。

      从事java开发的朋友对查API文档来说是再熟悉不过了,android开发也同样离不开查看API文档。我说说我自己的经历吧,当初我刚开始学java语言的时候,什么也不懂,老师说什么面向对象,我觉得与C语言没有多大的区别呀,总是以为也是面向过程的,学到后面才知道,我们为什么说java面向对象的。那是一次面试题目,写出排序的方法,我那时基础也不好,就用面向过程来完成,回来和朋友交流的时候,朋友说了让我很惊呀,啊?这么简单你还弄得那么复杂我就纳闷啦,为什么啊?结果他告诉我,你去查查API文档的Collections类,下面应该有个sort()方法吧。我回去一查,呀,这么简单啊,让我自己弄的那么复杂,真不该啊。好啦,从那以后,让我弄清楚了面向对象和如何查API文档了。为什么说是面向对象呢?是因为你只要调用Collections.sort()方法就解决如何排序问题,而面向过程是需要自己写出每一步实现的过程;java里涵盖的类实在是太多太多了,我相信就连发现java的人都不会全部记得的,这时就需要查API文档了,如何查呢?只要模糊的知道某个类,就在该类下搜索,看看方法名、参数以及返回的对象,先地位再细看。就这么的简单。我希望大家不要去死记那些类,合理查API,一样是关羽,一样能过五关斩六将。

      说了这么多的废话,大家也不耐烦了。下面我就用我自己所理解的方法给大家展示一下吧。

      首先我创建第一个MainActivity类。

public class MainActivity extends Activity {
    private static final String TAG = "MainActivity";
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "onCreate()");
       
        Button button = (Button) this.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, OtherActivity.class);
    startActivity(intent);
   }
  });
       
        Button threebutton = (Button) this.findViewById(R.id.threebutton);
        threebutton.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, ThreeActivity.class);
    startActivity(intent);
   }
  });
    }

 @Override
 protected void onDestroy() {
  Log.i(TAG, "onDestroy()");
  super.onDestroy();
 }

 @Override
 protected void onPause() {
   Log.i(TAG, "onPause()");
  super.onPause();
 }

 @Override
 protected void onRestart() {
   Log.i(TAG, "onRestart()");
  super.onRestart();
 }

 @Override
 protected void onResume() {
   Log.i(TAG, "onResume()");
  super.onResume();
 }

 @Override
 protected void onStart() {
   Log.i(TAG, "onStart()");
  super.onStart();
 }

 @Override
 protected void onStop() {
   Log.i(TAG, "onStop()");
  super.onStop();
 }
   
}

 

其次,创建OtherActivity类,其代码如下:

public class OtherActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.other);
 }

}

最后,再创建ThreeActivity 

public class ThreeActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.three);
 }
}

运行结果给大家看一下:

当然,我并不是让大家看运行后的界面,而是绕过大家看下后台的数据哦。

先来一步一步操作下,运行下android application,打开Logcat窗口(Window下的Show ViewOther...)如下图2个步骤:

1.

 2.

OK吧。

在状态栏看到下图标志的了吧。点击绿色的标志吧。

出现下图的

       我在Filter Name一栏输入MainActivity的字符串,在by Log Tag也输入"MainActivity"字符串,点击OK

       我们看到了第一个运行是onCreate()方法,第二个是onStart()方法,第三个是onResume()方法。这是第一次运行MainActivity类。

       当我点击按钮后,看下界面显示吧:

      再来看下后台打印的数据啊:

     前三个是刚才运行后的数据,第四条,是在我点击,从MainActivity调转到OtherActivity了,会执行OnPause()方法。接下来我返回到MainActivity界面中,看看又有什么变化:

      

 是不是有第五条数据啦,这时事调用了OnResume()方法了。

 

       我再来点击 ,看下前台界面有什么变化:

再来看下后台数据吧:

       这时又多出了2条数据了,分别是onPause()onStop()方法。当从MainActivity跳转到ThreeActivity类时,分别执行了onPause()onStop()方法。再来返回到MainActivity类。看看后台数据有没有变化:

       哇,看看打印出来的时间,就知道了,执行了三个方法,分别是onRestart()onStart()onResume()

最后退出该程序吧,看看后台的数据吧:

  

打印了onDestroy()方法了,这时是销毁了。

 

好了,整个过程,我们也都看到了,我只是没有清除打印台,大家不要误解,我担心某些人错认为都是一次性执行的结果。

 

总结一下吧:

第一次执行该程序时:onCreate()-->onStart()-->onResume()跳转到OtherActivity类时执行了onPause()再从OtherActivity类返回到MainActivity类时执行了onResume()再跳转到ThreeActivity类时执行了onPause()onStop()再从ThreeActivity返回到MainActivity类时执行了onRestart()-->onStart()-->onResume()最后退出该程序时,执行了onDestroy()

 

进一步的总结:

onCreate()是程序启动时就执行,一旦执行就不会在执行了,除非是销毁了才会执行;一旦离开Activity(无论是何Activity)时就会执行onPause()当又回到原始的那个类时,执行的是onResume()其他的一目了然了。

 

好了,到这里了,应该理解了吧!

 

欢迎多来指点交流!

更多相关文章

  1. 使用adb工具访问sqlite数据库
  2. Android 解析XML文件方法
  3. Android 的实现TextView中文字链接的4种方法
  4. android 的短信数据库的读取
  5. [Android] 切换语言后避免Activity重启方法
  6. 用cmd 命令更改Android 的默认虚拟机的地址的方法
  7. android应用安全——(数据抓包)跟踪监控android数据包

随机推荐

  1. tmp opengl es
  2. Android颜色对照表
  3. 在android中用代码触发一个按钮的点击事
  4. Android(安卓)JSON解析示例代码
  5. Android(安卓)应用程序开发
  6. android命令行模拟输入事件(文字、按键、
  7. How to install Google Apps (GApps) on
  8. Notification
  9. android 使用post方式进行网络连接
  10. android获取SD卡状态