安卓开发02:Activity的生命周期

基础代码:

创建安卓最基础版本的代码之后,会看到一个HelloWorld的例子。同时也会看到一个MainActivity.java的文件

安卓开发02:Activity的生命周期_第1张图片


打开看代码:

[java]  view plain copy print ?
  1. package com.example.androidtest;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.view.Menu;  
  8. import android.view.Window;  
  9.   
  10. public class MainActivity extends Activity {  
  11.       
  12.     private String tag = "MainActivity";  
  13.   
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  18.         setContentView(R.layout.activity_main); //设置一个View模板  
  19.         Log.d(tag, "In the onStart() event");    
  20.  }  
  21.       
  22.     @Override  
  23.     public void onStart() {    
  24.         super.onStart();    
  25.         Log.d(tag, "In the onStart() event");    
  26.     }    
  27.       
  28.     public void onRestart() {    
  29.         super.onRestart();    
  30.         Log.d(tag, "In the onRestart() event");    
  31.     }    
  32.     
  33.     public void onResume() {    
  34.         super.onResume();    
  35.         Log.d(tag, "In the onResume() event");    
  36.     }    
  37.     
  38.     public void onPause() {    
  39.         super.onPause();    
  40.         Log.d(tag, "In the onPause() event");    
  41.     }    
  42.     
  43.     public void onStop() {    
  44.         super.onStop();    
  45.         Log.d(tag, "In the onStop() event");    
  46.     }    
  47.     
  48.     public void onDestroy() {    
  49.         super.onDestroy();    
  50.         Log.d(tag, "In the onDestroy() event");    
  51.     }    
  52.   
  53.     @Override  
  54.     public boolean onCreateOptionsMenu(Menu menu) {  
  55.         getMenuInflater().inflate(R.menu.main, menu);  
  56.         return true;  
  57.     }  
  58.       
  59. }  


相关概念:

一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。

  当一个activity因新的activity启动而停止,它被通知这种状态转变通过activity的生命周期回调函数。有许多回调函数一个activity可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分。


我们测试一把:

我们启动这个Hello World程序,观察日志:我们可以观察到,启动的时候,首先onCreate() 创建一个页面布局,然后当用户可见的时候,调用onStart() ,当可以和用户交互的时候,调用onResume()

安卓开发02:Activity的生命周期_第2张图片

当我退出这个程序,日志打印的顺序是:onPause() ,onStop() ,onDestroy()。也就说,先暂停,然后停止,然后销毁

安卓开发02:Activity的生命周期_第3张图片


总结:

  1. onCreate()  ——  当Activity第一次创建的时候被调用。一般每个Activity都需要有一个onCreate()函数
  2. onStart()  ——  当Activity对用户可见的时候被调用。
  3. onResume()  ——  当Activity开始和用户交互的时候被调用。
  4. onPause()  ——  正在运行的Activity马上要被暂停的时候被调用,此时,在这之前的Activity被重新获取。
  5. onStop()  ——  当Activity不在对用户可见的时候被调用。
  6. onDestroy() —— 当被销毁的时候调用

生命周期图:

下面是一副Activity的生命周期图:

安卓开发02:Activity的生命周期_第4张图片

你可能感兴趣的:(Android开发)