編輯:高級開發
如果曾使用C,C++或Java編程語言,那麼可以知道一般程序是從 main() 函數開始。相似地,Android系統是一個Activity 的 onCreate() 方法調用開始啟動程序。一個回調方法 - 啟動一個活動,以及其它回調方法,如銷毀一個活動,活動的生命周期如下圖所示序列:
Activity類定義了以下的回調方法,即事件。並不需要實現所有的回調方法。然而重要的是了解每一個變化以及實現,以確保應用程序如用戶所期望的行為或方式。
這個例子通過簡單的步驟,顯示Android應用程序活動的生命周期。按照下面的步驟來修改Android應用程序,在創建的 Hello World 范例章節:
以下是修改主要活動文件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文件中聲明,必須聲明應用程序的主要活動列表<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 動作或LAUNCHER類不聲明一個活動,那麼應用程序圖標將不會出現在應用程序列表的主屏幕上。
現在嘗試運行修改後的 Hello World!應用程序。假設已經創建了AVD,同時做環境設置。從Eclipse運行應用程序,打開一個項目的活動文件,並單擊“Run”
圖標。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模擬器上的紅色按鈕,它會在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模擬器中,它會在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模擬器,它會生成以下事件消息在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
先睹為快 Android 3.0細節曝光
國外一家名為Phandroid的網站近日披露了android 3.0(Gingerbread)的一些細節。雖然新的系統仍在開發之中,不過我們仍然可以從曝光的一些細節中看
Android四種Activity的加載模式(1)
建議首先閱讀下面兩篇文章,這樣才可以更好的理解Activity的加載模式: android的進程,線程模型: http://www.cnblogs.com/ghj1
闡述Android開發過程中的難題
android開發采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分,下面就對這三個部分做一下自己的見解和看法,希望能夠給大家帶來相關的
Android開發經驗分享(3)
事半功倍的效果,在一堆同類的軟件中,下載量最大的,一定是讓用戶用著感覺最舒服的,哪怕它的功能並不比其他的產品出色,甚至略差一些。我見過很多開發人員,他們視技術為己任,一