活動表明了一個具備用戶界面的單一屏幕,如 Java 的窗口或者幀。Android 的活動是 ContextThemeWrapper 類的子類。java
若是你曾經用 C,C++ 或者 Java 語言編程,你應該知道這些程序從 main() 函數開始。很相似的,Android 系統初始化它的程序是經過活動中的 onCreate() 回調的調用開始的。存在有一序列的回調方法來啓動一個活動,同時有一序列的方法來關閉活動,以下面的活動聲明週期圖所示:android
Activity 類定義了下面的回調。你能夠不用實現全部的回調方法。當了解其中的每個很是的重要,實現這些能夠保證你的應用行爲如用戶所指望的那樣。編程
回調 | 描述 |
---|---|
onCreate() | 這是第一個回調,在活動第一次建立是調用 |
onStart() | 這個回調在活動爲用戶可見時被調用 |
onResume() | 這個回調在應用程序與用戶開始可交互的時候調用 |
onPause() | 被暫停的活動沒法接受用戶輸入,不能執行任何代碼。噹噹前活動將要被暫停,上一個活動將要被恢復是調用 |
onStop() | 當活動不在可見時調用 |
onDestroy() | 當活動被系統銷燬以前調用 |
onRestart() | 當活動被中止之後從新打開時調用 |
這個實例經過簡單地步驟展現 Android 應用程序活動的生命週期。按照下面的步驟來修改咱們在 Hello World 實例章節中建立的 Android 應用程序。app
步驟 | 描述 |
---|---|
1 | 使用eclipse IDE來建立一個Android應用程序,並命名爲HelloWorld放在com.example.helloworld包下。如以前Hello World Example章節中介紹。 |
2 | 按照下面修改主要活動文件MainActivity.java。保持其餘部分不變。 |
3 | 運行應用程序來打開Android模擬器,並檢查應用程序的修改結果。 |
下面是主要活動文件src/com.example.helloworld/MainActivity.java修改的內容。裏面包含每個基本的生命週期方法。Log.d()方法用來生成日誌信息:eclipse
package com.example.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; public class MainActivity extends Activity { String msg = "Android : "; /** 當活動第一次被建立時調用 */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(msg, "The onCreate() event"); } /** 當活動即將可見時調用 */ @Override protected void onStart() { super.onStart(); Log.d(msg, "The onStart() event"); } /** 當活動可見時調用 */ @Override protected void onResume() { super.onResume(); Log.d(msg, "The onResume() event"); } /** 當其餘活動得到焦點時調用 */ @Override protected void onPause() { super.onPause(); Log.d(msg, "The onPause() event"); } /** 當活動再也不可見時調用 */ @Override protected void onStop() { super.onStop(); Log.d(msg, "The onStop() event"); } /** 當活動將被銷燬時調用 */ @Override public void onDestroy() { super.onDestroy(); Log.d(msg, "The onDestroy() event"); } }
活動類從項目的res/layout中的XML文件加載全部的UI組件。下面的語句從res/layout/activity_main.xml文件中加載UI組件:ide
setContentView(R.layout.activity_main);
一個應用程序能夠有1個或多個活動,而沒有任何限制。每一個爲應用程序所定義的活動都須要在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="22" /> <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" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
不管是 MAIN 動做仍是 LAUNCHER 類別沒有在活動中聲明,那麼應用程序的圖標將不會出如今主屏幕的應用列表中。工具
讓咱們運行起剛剛修改的 "Hellow World!" 應用程序。假設你在環境搭建的時候已經建立了 AVD 。從 Eclipse 運行應用,打開一個項目中的活動文件,並從工具欄點擊運行圖標。Eclipse在AVD上安裝應用並啓動它。若是一切順利,將顯示模擬器屏幕以下,同時你能夠在Eclipse IDE的LogCat窗口中看到日誌信息:spa
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 模擬器上的紅色按鈕,它將在Eclipse IDE的LogCat窗口中產生以下的事件消息:日誌
<code>07-19 15:01:10.995: D/Android :(866): The onPause() event 07-19 15:01:12.705: D/Android :(866): The onStop() event </code>
讓咱們再次點擊 Android 模擬器上的菜單按鈕,它將在 Eclipse IDE 的 LogCat 窗口中產生以下的事件消息:
<code>07-19 15:01:13.995: D/Android :(866): The onStart() event 07-19 15:01:14.705: D/Android :(866): The onResume() event </code>
接下來,讓咱們點擊Android模擬器上的返回按鈕,它將在Eclipse IDE的LogCat窗口中產生以下的事件消息,Android 應用程序上活動的整個生命週期完成。
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