Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 開發入門 >> Android Activity的生命周期結構

Android Activity的生命周期結構

編輯:開發入門

本文將從Android官方網站的Activity生命周期結構圖講起,教我們弄清所有的生命周期函數的原理,用實例表現android Activity的生命周期結構。

AD:


    下圖是官網的Activity生命周期結構圖,從這個圖中可以看出Activity的生命周期函數挺多的,其實他的生命周期和以往我們看到的其他組件的生命周期一樣,都是從創建到銷毀的過程,只不過之間多加了幾個生命周期函數,將他的生命周期細化了。

    Activity生命周期結構圖

    首先看到的事onCreate()函數,顧名思義這個函數在Activity開始創建時調用,可以在其中定義一些初始化操作。接下來是 onStart()方法,這個方法在Activity開始被執行時調用,它緊隨onCreate()方法之後調用,接著是onResume()方法,這個 方法對我們來說算是比較陌生的,這個方法是在該Activity或得用戶輸入焦點時被調用,這個或得用戶輸入焦點有點不好理解,如果我們用過 android手機或者其他系統的手機時,經常會看到有些窗口雖然能看到但無法對他進行操作,這時的Activity就沒有或得用戶焦點。當這個方法調用 後Activity開始真正的運行了,在Activity正在運行時用戶激活了另一個Activity,這時將調用第一個Activity的 onPause()方法,可以理解為第一個Activity被暫停了,這個時候如果系統的內存不夠用,第一個Activity的進程可能被停止(何時被停 止是由系統決定的,不需要我們參入),當下次我們再運行第一個Activity時就需要重新創建這個Activity,那就又需要調用 onCreate()方法。如果在這個Activity沒有被停止的情況下,我們重新調用第一個Activity,就會直接調用它的onResume() 方法後開始運行。如果第一個Activity很久都沒有得到再次運行機會,就會調用onStop()被停止,這時如果Activity又或得用戶輸入焦 點,就會調用onRestart()方法,重新開始執行這個Activity,或者被系統停止,否則調用onDestroy()方法銷毀 Activity。其實在實際開發中我們很少會用到所有的生命周期函數,但我們要弄清它的原理,在使用時知道所以然就行了。

    下面來看一個實例

    第一個Activity的布局文件(main.XML):

    XML代碼

    1. <?XML version="1.0" encoding="utf-8"?>   
    2. <LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"   
    3.     android:orIEntation="vertical"   
    4.     android:layout_width="fill_parent"   
    5.     android:layout_height="fill_parent"   
    6.     >   
    7. <TextVIEw     
    8.     android:layout_width="fill_parent"    
    9.     android:layout_height="wrap_content"    
    10.     android:text="@string/hello"   
    11.     />   
    12. <Button   
    13.     android:id="@+id/myButton"   
    14.     android:layout_width="fill_parent"   
    15.     android:layout_height="wrap_content"   
    16.     android:text="@string/first_button"   
    17.     />   
    18. </LinearLayout>   

    第二個Activity的布局文件(Second.XML):

    XML代碼

    1. <?XML version="1.0" encoding="utf-8"?>   
    2. <manifest XMLns:android="http://schemas.android.com/apk/res/android"   
    3.       package="mars.activity05"   
    4.       android:versionCode="1"   
    5.       android:versionName="1.0">   
    6.     <application android:icon="@drawable/icon" android:label="@string/app_name">   
    7.         <activity android:name=".FirstActivity"   
    8.                   android:label="@string/app_name">   
    9.             <intent-filter>   
    10.                 <action android:name="android.intent.action.MAIN" />   
    11.                 <category android:name="android.intent.category.LAUNCHER" />   
    12.             </intent-filter>   
    13.         </activity>   
    14.         <activity android:name=".SecondActivity"   
    15.                   android:label="SecondActivity"   
    16.                   android:theme="@android:style/Theme.Dialog"/>   
    17.    
    18.     </application>   
    19.     <uses-sdk android:minSdkVersion="4" />   
    20.    
    21. </manifest>    

    FirstActivity.Java:

    Java代碼

    1. package mars.activity05;   
    2.    
    3. import android.app.Activity;   
    4. import android.content.Intent;   
    5. import android.os.Bundle;   
    6. import android.view.VIEw;   
    7. import android.view.VIEw.OnClickListener;   
    8. import android.widget.Button;   
    9.    
    10. public class FirstActivity extends Activity {   
    11.     /** Called when the activity is first created. */   
    12.     private Button myButton;   
    13.    
    14.     @Override   
    15.     public void onCreate(Bundle savedInstanceState) {   
    16.         System.out.println("FirstActivity ---> onCreate   ");   
    17.         super.onCreate(savedInstanceState);   
    18.         setContentVIEw(R.layout.main);   
    19.         myButton = (Button) findVIEwById(R.id.myButton);   
    20.         myButton.setOnClickListener(new ButtonListener());   
    21.     }   
    22.    
    23.     @Override   
    24.     protected void onDestroy() {   
    25.         // TODO Auto-generated method stub   
    26.         System.out.println("FirstAcvity --->onDestory");   
    27.         super.onDestroy();   
    28.     }   
    29.    
    30.     @Override   
    31.     protected void onPause() {   
    32.         // TODO Auto-generated method stub   
    33.         System.out.println("FirstAcvity --->onPause");   
    34.         super.onPause();   
    35.     }   
    36.    
    37.     @Override   
    38.     protected void onRestart() {   
    39.         // TODO Auto-generated method stub   
    40.         System.out.println("FirstAcvity --->onRestart");   
    41.         super.onRestart();   
    42.     }   
    43.    
    44.     @Override   
    45.     protected void onResume() {   
    46.         // TODO Auto-generated method stub   
    47.         System.out.println("FirstAcvity --->onResume");   
    48.         super.onResume();   
    49.     }   
    50.    
    51.     @Override   
    52.     protected void onStart() {   
    53.         // TODO Auto-generated method stub   
    54.         System.out.println("FirstAcvity --->onStart");   
    55.         super.onStart();   
    56.     }   
    57.    
    58.     @Override   
    59.     protected void onStop() {   
    60.         // TODO Auto-generated method stub   
    61.         System.out.println("FirstAcvity --->onStop");   
    62.         super.onStop();   
    63.     }   
    64.    
    65.     class ButtonListener implements OnClickListener {   
    66.    
    67.         @Override   
    68.         public void onClick(VIEw v) {   
    69.             // TODO Auto-generated method stub   
    70.             Intent intent = new Intent();   
    71.             intent.setClass(FirstActivity.this, SecondActivity.class);   
    72.             FirstActivity.this.startActivity(intent);   
    73.         }   
    74.    
    75.     }   
    76.    
    77. }   

    SecondActivity.Java:

    Java代碼

    1. package mars.activity05;   
    2.    
    3. import android.app.Activity;   
    4. import android.content.Intent;   
    5. import android.os.Bundle;   
    6. import android.view.VIEw;   
    7. import android.view.VIEw.OnClickListener;   
    8. import android.widget.Button;   
    9.    
    10. public class SecondActivity extends Activity{   
    11.    
    12.     private Button secondButton;   
    13.        
    14.     @Override   
    15.     protected void onCreate(Bundle savedInstanceState) {   
    16.         System.out.println("SecondActivity--->onCreate");   
    17.         // TODO Auto-generated method stub   
    18.         super.onCreate(savedInstanceState);   
    19.         setContentVIEw(R.layout.second);   
    20.         secondButton = (Button)findVIEwById(R.id.secondButton);   
    21.         secondButton.setOnClickListener(new ButtonListener());   
    22.     }   
    23.    
    24.     @Override   
    25.     protected void onDestroy() {   
    26.         // TODO Auto-generated method stub   
    27.         System.out.println("SecondActivity--->onDestory");   
    28.         super.onDestroy();   
    29.     }   
    30.    
    31.     @Override   
    32.     protected void onPause() {   
    33.         // TODO Auto-generated method stub   
    34.         System.out.println("SecondActivity--->onPause");   
    35.         super.onPause();   
    36.     }   
    37.    
    38.     @Override   
    39.     protected void onRestart() {   
    40.         // TODO Auto-generated method stub   
    41.         System.out.println("SecondActivity--->onRestart");   
    42.         super.onRestart();   
    43.     }   
    44.    
    45.     @Override   
    46.     protected void onResume() {   
    47.         // TODO Auto-generated method stub   
    48.         System.out.println("SecondActivity--->onResume");   
    49.         super.onResume();   
    50.     }   
    51.    
    52.     @Override   
    53.     protected void onStart() {   
    54.         // TODO Auto-generated method stub   
    55.         System.out.println("SecondActivity--->onStart");   
    56.         super.onStart();   
    57.     }   
    58.    
    59.     @Override   
    60.     protected void onStop() {   
    61.         // TODO Auto-generated method stub   
    62.         System.out.println("SecondActivity--->onStop");   
    63.         super.onStop();   
    64.     }   
    65.    
    66.     class ButtonListener implements OnClickListener{   
    67.    
    68.         @Override   
    69.         public void onClick(VIEw v) {   
    70.             // TODO Auto-generated method stub   
    71.             Intent intent = new Intent();   
    72.             intent.setClass(SecondActivity.this, FirstActivity.class);   
    73.             SecondActivity.this.startActivity(intent);   
    74.         }   
    75.            
    76.     }   
    77. }   

    1. 上一頁:
    2. 下一頁:
    熱門文章
    閱讀排行版
    Copyright © Android教程網 All Rights Reserved