Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習整理之Activity生命周期篇

Android學習整理之Activity生命周期篇

編輯:關於Android編程

一、Activity生命周期說明    Activity的四種狀態:     ⒈活動狀態(Active or Running):也稱為運行狀態,處於Activity棧頂,在用戶界面中最上層,完全能被用戶看到,能夠與用戶進行交互;     ⒉ 暫停狀態(Paused):Activity失去焦點,Activity界面被部分遮擋,該Activity不再處於用戶界面的最上層,且不能夠與用戶進行交互。一個暫停狀態的Activity依然保持活力(保持所有的狀態,成員信息,與窗口管理器保持連接),但是在系統內存不夠用的時候將被殺掉;   ⒊停止狀態(Stopped):Activity在界面上完全不能被用戶看到,也就是說這個Activity被其他Activity全部遮擋,但它依然保持所有狀態和成員信息,只是它不再可見,它的窗口被隱藏;   ⒋非活動狀態(Killed):當系統內存需要被用在其他地方的時候,一個停止狀態的Activity被殺掉。   如果一個Activity是Paused或者Stopped狀態時可以被恢復,也可以被刪除。一個被刪除(殺掉)的Activity如果需要重新恢復就需要重啟。   當一個activity的當前狀態發生改變時,當前activity就會觸發一系列的回調方法。這些回調方法很明白的闡述了activity生命周期的變化過程。     這些方法分別為:onCreat();onstart();onResume;onPause();onStop();onRestart();onDestroy();   二、生命周期圖解說明     這張圖,相信學習過android開發的大牛們都非常的熟悉了,但我還是圖解一下:   1、當一個activity啟動時,首先會調用onCreat();方法,然後調用onStart();方法,接下來調用onResume();方法。進入activity界面,此時的activity處於Running狀態。   2、當一個不是全屏的activity被啟動時(即當前activity被不完全遮住,dialog除外),那麼當前activity首先會執行onPause();方法,當不是全屏的activity被從棧頂移除是,那麼activity會執行onResume();方法。   3、當當前activity被新的activity完全覆蓋時,或者按home回到主界面時,當前activity會執行,onPause(),onStop();方法,當回到當前activity時,會執行onRestart();onstart();onResume();方法。   4、當用戶退出當前activity時會執行onPause();onStop();最後執行onDestroy();方法。   三、程序示例解釋說明     復制代碼   1 package org.david.activitylifecycle;   2    3 import android.os.Bundle;   4 import android.app.Activity;   5 import android.content.Intent;   6 import android.util.Log;   7 import android.view.View;   8 import android.view.View.OnClickListener;   9 import android.widget.Button;  10   11 public class MainActivity extends Activity implements OnClickListener {  12   13     private static final String TAG = MainActivity.class.getSimpleName();  14     private Button btn_next, btn_halfActivity;  15   16     @Override  17     protected void onCreate(Bundle savedInstanceState) {  18         super.onCreate(savedInstanceState);  19         Log.i(TAG, "onCreate()");  20         setContentView(R.layout.activity_main);  21   22         // init---view  23         btn_next = (Button) findViewById(R.id.btn_next);  24         btn_halfActivity = (Button) findViewById(R.id.btn_halfActivity);  25         btn_next.setOnClickListener(this);  26         btn_halfActivity.setOnClickListener(this);  27   28     }  29   30     @Override  31     public void onClick(View v) {  32         switch (v.getId()) {  33         case R.id.btn_next:  34             Intent intent = new Intent(this, SecondActivity.class);  35             startActivity(intent);  36             break;  37         case R.id.btn_halfActivity:  38             Intent intent2 = new Intent(this,HalfActivity.class);  39             startActivity(intent2);  40             break;  41   42         }  43     }  44   45     @Override  46     protected void onStart() {  47         super.onStart();  48         Log.i(TAG, "onstart()");  49     }  50   51     @Override  52     protected void onRestart() {  53         super.onRestart();  54         Log.i(TAG, "onRestart()");  55     }  56   57     @Override  58     protected void onResume() {  59         super.onResume();  60         Log.i(TAG, "onResume()");  61     }  62   63     @Override  64     protected void onPause() {  65         super.onPause();  66         Log.i(TAG, "onPause()");  67     }  68   69     @Override  70     protected void onStop() {  71         super.onStop();  72         Log.i(TAG, "onStop()");  73     }  74   75     @Override  76     protected void onDestroy() {  77         super.onDestroy();  78         Log.i(TAG, "onDestroy()");  79     }  80   81     @Override  82     protected void onRestoreInstanceState(Bundle savedInstanceState) {  83         super.onRestoreInstanceState(savedInstanceState);  84         Log.i(TAG, "onRestoreInstanceState()");  85     }  86   87     @Override  88     protected void onNewIntent(Intent intent) {  89         super.onNewIntent(intent);  90         Log.i(TAG, "onNewIntent()");  91     }  92   93     @Override  94     protected void onSaveInstanceState(Bundle outState) {  95         super.onSaveInstanceState(outState);  96         Log.i(TAG, "onSaveInstanceState()");  97     }  98       99  100 }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved