`
在下个路口
  • 浏览: 109701 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Activity的生命周期你知几何?

阅读更多
      人从出生到离去,用文学的话来说是一个轮回,用生物学上的话来说是一个生命周期。什么是生命周期,生命周期是指一个事物从产生到消失的这一个过程,一棵树从种子到死亡,是一个周期;一个企业从创办到破产,是一个周期,同样的,一个程序也有生命周期。在Android开发中,Activity是用户与程序交互的界面,而用户使用手机用的最多的恐怕就是界面了。那么掌握Activity的生命周期,即界面的生命周期就尤为重要了。
      Android中控制生命周期是通过用一些方法在系统中运行的顺序来控制的,这些函数有
onCreate(),onStart()、onResume()、onPause()、onStop()、onDestroy()等。
顾名思义,我们应该能够猜到其执行顺序。那么我们可以来做一个简单的小测试,测试这些方法到底在什么时候执行,这些方法又是怎么来控制一个Activity的生命周期的。
      写一段代码,分别实现其以上函数:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
                  //创建按钮对象
Button jump=(Button)findViewById(R.id.jump);
jump.setOnClickListener(new LoginListener());

System.out.println("执行了onCreat方法");
       }
}

    public class LoginListener implements OnClickListener{
//实现接口抽象方法
       public void onClick(View v){
         Intent intent=new Intent();
intent.setClass(MainActivity.this,newActivity.class);
MainActivity.this.startActivity(intent);
finish();//销毁当前Activity
Toast.makeText(MainActivity.this, "成功跳转", 2).show();
   }
}
//执行生命周期各方法
    protected void onStart(){
    super.onStart();
    System.out.println("执行了onStart方法");
    }
    protected void onResume(){
    super.onResume();
    System.out.println("执行了onResume");
    }
    protected void onPause(){
    super.onPause();
    System.out.println("执行了onPause方法");
    }
    protected void onStop(){
    super.onStop();
    System.out.println("执行了onStop方法");
   }
    protected void onDestroy(){
    super.onDestroy();
    System.out.println("执行了onDestroy方法");
    }
   
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}
      执行这段代码,观察其输出结果,我们可以看到,
      在这个阶段我们看到执行了onCreat()和onStart()方法,而且先是执行了前者,onCreat()方法是在其创建Activity时执行的,这在创建一个Activity时,系统总是自动提供了onCreat()方法时,就可以猜想该方法是在创建时调用的,不然为什么你创建的时候为什么该方法总必须写呢!而事实也确实是在该阶段执行的。那么onStart()方法呢?该方法是Activity在屏幕对用户可见时调用的,也就是说,想让用户看见这个Activity就必须通过onStart()方法。先创建creat,再送到用户面前start。
     然后你可以在该Activity上执行某些操作,也就是用户与程序产生交互,是的,此时正是onResume()方法调用的时候 。当用户开始向此Activity  say hello时,那么这时就是onResume()出马的时候了。
      在MainActivity上创建一个Button,实行监听,当跳转的那一瞬间执行了onPause()方法,即是当此门面被暂停时,此时跳转到另一门面(Activity)时,原来的被暂停,此时调用的即为onPause()方法,而当newActivity完全显示在用户面前时,那么原来的MainActivity该执行生命周期里面的哪个函数呢,我们可以很清楚的想到,此时应该调用的就是onStop()方法。    
       我们分析完此上的几种函数后,只有onDestroy()了,而我们之前说过,一个完整的Activity生命周期必须包括从出现到消失的整个过程,那么onDestroy()就必须是在Activity消失的时候调用的。在这里我点击了返回,先后执行了onPause(),onStop()和onDestroy(),这是因为点击返回时,不能马上跳出该Activity,只能先暂停,之后停止,然后才是销毁,这是一个连续的过程。而且在第一个Activity跳转到第二个Activity时,用了finish方法,此时会调用onDestroy()销毁第一个Activity。
      

  
       综上,我们来做一个总结。
     onCreate():创建Activity调用,用于Activity的初始化,在Activity生命周期中      只执行一次,适用于实例化对象
     onStart():Activity:在屏幕上对用户可见时调用
     onResume():Activity开始和用户交互的时候调用,这时该Activity是在Activity栈的顶部
     onPause():Activity被暂停时调用,被其他的Activity挡在后面,这里可以做一些清理和保存工作
     onStop():Activity被停止或者Activity变成不可见时调用
     onDestroy():Activity被从内存中移除,一般发生在执行finish方法时或者Android回收内存的时候
      在一个生命周期里面,onCreat()和onDestroy()只能执行一次,这就像是人只能出生一次,也只有一次生命。而其它几种没有运行次数的限制,这要看具体的操作了。
  • 大小: 46.6 KB
  • 大小: 27.8 KB
  • 大小: 29.5 KB
  • 大小: 35.4 KB
分享到:
评论

相关推荐

    Android开发应用实战详解源代码

    2.5 activity的生命周期 2.5.1 activity状态 2.5.2 剖析activity 2.6 android进程和线程 2.6.1 进程 2.6.2 线程 2.6.3 远程调用(remote procedure calls) 2.7 intent消息传递 2.8 intent广播事件 2.8.1 广播事件 ...

    android开发揭秘PDF

    3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发详解 4.1.1 用户界面简介 4.1.2 事件处理 4.2 常用控件应用 4.2.1 文本框(Textiew) 4.2.2 列表(ListView) 4.2.3 提示(T0...

    《Android应用开发揭秘》附带光盘代码.

     3.2 Android的生命周期  3.3 Android程序U设计  3.4 小结  第4章 用户界面开发  4.1 用户界面开发详解  4.1.1 用户界面简介  4.1.2 事件处理  4.2 常用控件应用  4.2.1 文本框(Textiew)  4.2.2 列表...

    《Android应用开发揭秘》源码

     3.2 Android的生命周期  3.3 Android程序U设计  3.4 小结  第4章 用户界面开发  4.1 用户界面开发详解  4.1.1 用户界面简介  4.1.2 事件处理  4.2 常用控件应用  4.2.1 文本框(Textiew)  4.2.2 列表...

    Android应用开发揭秘pdf高清版

    3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发详解 4.1.1 用户界面简介 4.1.2 事件处理 4.2 常用控件应用 4.2.1 文本框(Textiew) 4.2.2 列表(ListView) 4.2.3 提示(T0...

Global site tag (gtag.js) - Google Analytics