鍍金池/ 教程/ Android/ Android Activity
Android 應(yīng)用組件
使用布局文件自定義Android組件
Android通知
Android主題示例
Android JetPlayer實(shí)例
Android MediaPlayer(多媒體播放)
Android AbsoluteLayout
Android FrameLayout
Android Gestures/手勢(shì)
Android AutoCompleteTextView(自動(dòng)完成)實(shí)例
Android 資源組織和訪問(wèn)
Android ListView
Android GridView
Android數(shù)據(jù)備份
Android撥打電話
Android發(fā)送短信/SMS
Android ProgressDialog
SimpleCursorAdapter
Android發(fā)送電子郵件
Android Activity
Android TextView
Android事件處理
Android TableLayout
Android加載Spinner
Android內(nèi)容提供者
Android自定義字體
Android Service
Android CheckBox
Android Intent過(guò)濾器
Android LinearLayout
Android登錄實(shí)例
Android RadioButton
Android樣式和主題
Android自定義組件及屬性
Android UI控件
Android Animation(動(dòng)畫(huà))實(shí)例
Android Camera(攝像頭)
Android ToggleButton
Android Clipboard(復(fù)制/剪貼板)
Android音頻捕獲(錄音)
發(fā)布Android應(yīng)用
Android Alertdialog(警告對(duì)話框)
Android圖片效果
Android內(nèi)部存儲(chǔ)
Android基于位置服務(wù)
Android RadioGroup
Android AutoCompleteTextView
Android Bluetooth(藍(lán)牙)實(shí)例
Android RelativeLayout
Android最佳實(shí)踐
Android本地化
Android自定義組件
Android教程
Android 架構(gòu)
Android UI布局
Android Button
Android Hello World示例
Android音頻管理器實(shí)例
ArrayAdapter
Android拖放
Android碎片/片段
Android圖片切換
Android JSON解析器
Android開(kāi)發(fā)環(huán)境搭建
Android Spinner
Android樣式示例
使用活動(dòng)代碼自定義Android組件
Android ImageButton
Android EditText
Android廣播接收器

Android Activity

活動(dòng)(activity)表示一個(gè)單一屏幕上的用戶界面。例如,電子郵件應(yīng)用程序可能是一個(gè)活動(dòng),顯示新的電子郵件列表是另一個(gè)活動(dòng),撰寫(xiě)電子郵件,閱讀電子郵件可能又是其它的活動(dòng)。如果應(yīng)用程序有一個(gè)以上的活動(dòng),那么應(yīng)該將其中的一個(gè)活動(dòng)標(biāo)記為活動(dòng)啟動(dòng)應(yīng)用程序。

如果曾使用C,C++或Java編程語(yǔ)言,那么可以知道一般程序是從 main() 函數(shù)開(kāi)始。相似地,Android系統(tǒng)是一個(gè)Activity 的 onCreate() 方法調(diào)用開(kāi)始啟動(dòng)程序。一個(gè)回調(diào)方法 - 啟動(dòng)一個(gè)活動(dòng),以及其它回調(diào)方法,如銷毀一個(gè)活動(dòng),活動(dòng)的生命周期如下圖所示序列:

Android Activity lifecycle

Activity類定義了以下的回調(diào)方法,即事件。并不需要實(shí)現(xiàn)所有的回調(diào)方法。然而重要的是了解每一個(gè)變化以及實(shí)現(xiàn),以確保應(yīng)用程序如用戶所期望的行為或方式。

回調(diào)方法 描述
onCreate() 這是第一次回調(diào),活動(dòng)在第一次創(chuàng)建時(shí)調(diào)用。
onStart() 這個(gè)回調(diào)被稱為活動(dòng)時(shí)變成對(duì)用戶可見(jiàn)。
onResume() 這就是所謂的啟動(dòng),當(dāng)用戶與應(yīng)用程序交互。
onPause() 暫?;顒?dòng)不接收用戶輸入并不執(zhí)行任何代碼并調(diào)用時(shí),當(dāng)前的活動(dòng)被暫停,恢復(fù)以前的活動(dòng)。
onStop() 這個(gè)回調(diào)被稱為活動(dòng)時(shí)不再可見(jiàn)
onDestroy() 活動(dòng)前由系統(tǒng)被銷毀,調(diào)用此回調(diào)
onRestart() 活動(dòng)重新啟動(dòng)時(shí),停止后調(diào)用此回調(diào)

例子

這個(gè)例子通過(guò)簡(jiǎn)單的步驟,顯示Android應(yīng)用程序活動(dòng)的生命周期。按照下面的步驟來(lái)修改Android應(yīng)用程序,在創(chuàng)建的 Hello World 范例章節(jié):

步驟 描述
1 我們將使用Eclipse IDE中創(chuàng)建一個(gè)Android應(yīng)用程序,并將其命名在 HelloWorld 的包下,如:com.example.helloworld的Hello World范例章節(jié)解釋。
2 修改Main活動(dòng)文件MainActivity.java,其余文件保持不變。
3 運(yùn)行該應(yīng)用程序啟動(dòng)Android模擬器并驗(yàn)證應(yīng)用程序中所做的更改結(jié)果。

以下是修改主要活動(dòng)文件src/com.example.helloworld/MainActivity.java后的內(nèi)容,該文件包含了每個(gè)基本生命周期方法。 Log.d() 方法是用來(lái)生成日志消息: 

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");
   }
}

活動(dòng)類加載UI組件,使用在項(xiàng)目的 res/layout 文件夾的XML文件。下面的語(yǔ)句從 res/layout/activity_main.xml 文件加載UI組件:

setContentView(R.layout.activity_main);

應(yīng)用程序可以有一個(gè)或多個(gè)活動(dòng)受任何限制。每個(gè)活動(dòng)定義為應(yīng)用程序必須在AndroidManifest.xml文件中聲明,必須聲明應(yīng)用程序的主要活動(dòng)列表<intent-filter>,包括如下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" >
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER"/>
           </intent-filter>
       </activity>
   </application>
</manifest>

如果 MAIN 動(dòng)作或LAUNCHER類不聲明一個(gè)活動(dòng),那么應(yīng)用程序圖標(biāo)將不會(huì)出現(xiàn)在應(yīng)用程序列表的主屏幕上。 

現(xiàn)在嘗試運(yùn)行修改后的 Hello World!應(yīng)用程序。假設(shè)已經(jīng)創(chuàng)建了AVD,同時(shí)做環(huán)境設(shè)置。從Eclipse運(yùn)行應(yīng)用程序,打開(kāi)一個(gè)項(xiàng)目的活動(dòng)文件,并單擊“Run” Eclipse Run Icon 圖標(biāo)。Eclipse 在 AVD上安裝應(yīng)用程序,并啟動(dòng)它,如果設(shè)置和應(yīng)用都沒(méi)有問(wèn)題,它會(huì)顯示仿真器窗口中,也應(yīng)該看到以下日志消息在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 LotCat Window

點(diǎn)擊紅色按鈕Android Red Button - 在Android模擬器上的紅色按鈕,它會(huì)在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

讓我們?cè)俅螄L試單擊菜單按鈕Android Menu Button - Android菜單按鈕在Android模擬器中,它會(huì)在Eclipse IDE 的 LogCat窗口中生成以下事件消息: 

上一篇:Android音頻捕獲(錄音)下一篇:Android自定義組件及屬性