Android開發教學
Android 開發環境配置
Android 架構
Android 應用組件
Android Hello World示例
Android 資源組織和訪問
Android Activity
Android Service
Android廣播接收器
Android內容提供者
Android碎片/片段
Android Intent過濾器
Android UI佈局
Android LinearLayout
Android RelativeLayout
Android TableLayout
Android AbsoluteLayout
Android FrameLayout
Android ListView
Android GridView
Android UI控件
Android TextView
Android EditText
Android AutoCompleteTextView
Android Button
Android ImageButton
Android CheckBox
Android ToggleButton
Android RadioButton
Android RadioGroup
Android事件處理
Android樣式和主題
Android樣式示例
Android主題示例
Android自定義組件
Android拖放
Android通知
Android基於位置服務
Android發送電子郵件
Android發送短信/SMS
Android撥打電話
發佈Android應用
ArrayAdapter
SimpleCursorAdapter
Android ProgressDialog
Android Spinner
使用活動代碼自定義Android組件
使用佈局文件自定義Android組件
Android自定義組件及屬性
Android Alertdialog(警告對話框)
Android Animation(動畫)實例
Android音頻捕獲(錄音)
Android音頻管理器實例
Android AutoCompleteTextView(自動完成)實例
Android最佳實踐
Android Bluetooth(藍牙)實例
Android Camera(攝像頭)
Android Clipboard(複製/剪貼板)
Android自定義字體
Android數據備份
Android Gestures/手勢
Android圖片效果
Android圖片切換
Android內部存儲
Android JetPlayer實例
Android JSON解析器
Android加載Spinner
Android本地化
Android登錄實例
Android MediaPlayer(多媒體播放)

Android Activity

活動(activity)表示一個單一屏幕上的用戶界面。例如,電子郵件應用程序可能是一個活動,顯示新的電子郵件列表是另一個活動,撰寫電子郵件,閱讀電子郵件可能又是其它的活動。如果應用程序有一個以上的活動,那麼應該將其中的一個活動標記爲活動啓動應用程序。

如果曾使用C,C++或Java編程語言,那麼可以知道一般程序是從 main() 函數開始。相似地,Android系統是一個Activity 的 onCreate() 方法調用開始啓動程序。一個回調方法 - 啓動一個活動,以及其它回調方法,如銷燬一個活動,活動的生命週期如下圖所示序列:

Android

Activity類定義了以下的回調方法,即事件。並不需要實現所有的回調方法。然而重要的是瞭解每一個變化以及實現,以確保應用程序如用戶所期望的行爲或方式。

回調方法

描述

onCreate()

這是第一次回調,活動在第一次創建時調用。

onStart()

這個回調被稱爲活動時變成對用戶可見。

onResume()

這就是所謂的啓動,當用戶與應用程序交互。

onPause()

暫停活動不接收用戶輸入並不執行任何代碼並調用時,當前的活動被暫停,恢復以前的活動。

onStop()

這個回調被稱爲活動時不再可見

onDestroy()

活動前由系統被銷燬,調用此回調

onRestart()

活動重新啓動時,停止後調用此回調

例子

這個例子通過簡單的步驟,顯示Android應用程序活動的生命週期。按照下面的步驟來修改Android應用程序,在創建的 Hello World 範例章節:

步驟

描述

1

我們將使用Eclipse IDE中創建一個Android應用程序,並將其命名在 HelloWorld 的包下,如:com.example.helloworld的Hello World範例章節解釋。

2

修改Main活動文件MainActivity.java,其餘文件保持不變。

3

運行該應用程序啓動Android模擬器並驗證應用程序中所做的更改結果。

以下是修改主要活動文件src/com.example.helloworld/MainActivity.java後的內容,該文件包含了每個基本生命週期方法。 Log.d() 方法是用來生成日誌消息: 

package com.example.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; public class MainActivity extends Activity { String msg = "Android : "; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(msg, "The onCreate() event"); } /** Called when the activity is about to become visible. */ @Override protected void onStart() { super.onStart(); Log.d(msg, "The onStart() event"); } /** Called when the activity has become visible. */ @Override protected void onResume() { super.onResume(); Log.d(msg, "The onResume() event"); } /** Called when another activity is taking focus. */ @Override protected void onPause() { super.onPause(); Log.d(msg, "The onPause() event"); } /** Called when the activity is no longer visible. */ @Override protected void onStop() { super.onStop(); Log.d(msg, "The onStop() event"); } /** Called just before the activity is destroyed. */ @Override public void onDestroy() { super.onDestroy(); Log.d(msg, "The onDestroy() event"); } }

活動類加載UI組件,使用在項目的 res/layout 文件夾的XML文件。下面的語句從 res/layout/activity_main.xml 文件加載UI組件:

setContentView(R.layout.activity_main);

應用程序可以有一個或多個活動受任何限制。每個活動定義爲應用程序必須在AndroidManifest.xml文件中聲明,必須聲明應用程序的主要活動列表,包括如下MAIN 操作和 LAUNCHER 類:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/>

如果 MAIN 動作或LAUNCHER類不聲明一個活動,那麼應用程序圖標將不會出現在應用程序列表的主屏幕上。 

現在嘗試運行修改後的 Hello World!應用程序。假設已經創建了AVD,同時做環境設置。從Eclipse運行應用程序,打開一個項目的活動文件,並單擊「Run」  Eclipse  圖標。Eclipse 在 AVD上安裝應用程序,並啓動它,如果設置和應用都沒有問題,它會顯示仿真器窗口中,也應該看到以下日誌消息在Eclipse IDE LogCat 窗口:

07-19 15:00:43.405: D/Android :(866): The onCreate() event
07-19 15:00:43.405: D/Android :(866): The onStart() event
07-19 15:00:43.415: D/Android :(866): The onResume() event

Android

點擊紅色按鈕 Android  - 在Android模擬器上的紅色按鈕,它會在Eclipse IDE窗口LogCat中生成以下事件消息:  

07-19 15:01:10.995: D/Android :(866): The onPause() event
07-19 15:01:12.705: D/Android :(866): The onStop() event

讓我們再次嘗試單擊菜單按鈕 Android  - Android菜單按鈕在Android模擬器中,它會在Eclipse IDE 的 LogCat窗口中生成以下事件消息: 

07-19 15:01:13.995: D/Android :(866): The onStart() event
07-19 15:01:14.705: D/Android :(866): The onResume() event

接下來,就讓我們再次嘗試點擊後退按鈕 Android  - Android後退按鈕在Android模擬器,它會生成以下事件消息在Eclipse IDE LogCat窗口中,以上完成Android應用程序Acitivity 的生命週期。 

07-19 15:33:15.687: D/Android :(992): The onPause() event
07-19 15:33:15.525: D/Android :(992): The onStop() event
07-19 15:33:15.525: D/Android :(992): The onDestroy() event