• Android Video Tutorials

Android - 活動 (huódòng)



活動代表著一個帶有使用者介面的單個螢幕,就像Java的視窗或框架一樣。Android 活動是 ContextThemeWrapper 類的子類。

如果您使用過 C、C++ 或 Java 程式語言,那麼您一定見過您的程式從 `main()` 函式開始。類似地,Android 系統在其活動中啟動其程式,從呼叫 `onCreate()` 回撥方法開始。有一系列回撥方法啟動活動,還有一系列回撥方法關閉活動,如下所示的活動生命週期圖:(圖片來自:android.com)

Android Activity lifecycle

Activity 類定義了以下回調,即事件。您不需要實現所有回撥方法。但是,瞭解每個回撥方法並實現那些確保您的應用按使用者預期方式執行的方法非常重要。

序號 (xuànhào) 回撥及描述 (huídiào jí miáoshù)
1

onCreate()

這是第一個回撥,在首次建立活動時呼叫。

2

onStart()

當活動對使用者可見時呼叫此回撥。

3

onResume()

當用戶開始與應用程式互動時呼叫此方法。

4

onPause()

暫停的活動不會接收使用者輸入,也不能執行任何程式碼,在當前活動暫停且前一個活動恢復時呼叫。

5

onStop()

當活動不再可見時呼叫此回撥。

6

onDestroy()

在系統銷燬活動之前呼叫此回撥。

7

onRestart()

在停止活動後重新啟動活動時呼叫此回撥。

示例 (shìlì)

此示例將引導您完成簡單的步驟,以顯示 Android 應用程式活動生命週期。按照以下步驟修改我們在“Hello World 示例”一章中建立的 Android 應用程式:

步驟 (bùzhòu) 描述 (miáoshù)
1 您將使用 Android Studio 建立一個 Android 應用程式,並將其命名為 `HelloWorld`,位於 `com.example.helloworld` 包下,如“Hello World 示例”一章中所述。
2 修改主活動檔案 `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");
   }
}

活動類使用專案 `res/layout` 資料夾中提供的 XML 檔案載入所有 UI 元件。以下語句從 `res/layout/activity_main.xml` 檔案載入 UI 元件:

setContentView(R.layout.activity_main);

應用程式可以擁有一個或多個活動,沒有任何限制。您為應用程式定義的每個活動都必須在您的 `AndroidManifest.xml` 檔案中宣告,並且您的應用程式的主活動必須在清單中宣告,幷包含一個 ``,其中包含 MAIN 操作和 LAUNCHER 類別,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tutorialspoint7.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <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**。要從 Android Studio 執行應用程式,請開啟您的專案的活動檔案之一,然後單擊工具欄中的執行 Eclipse Run Icon 圖示。Android Studio 將應用程式安裝到您的 AVD 並啟動它,如果您的設定和應用程式一切正常,它將顯示模擬器視窗,您應該在 Android Studio 的 **LogCat** 視窗中看到以下日誌訊息:

08-23 10:32:07.682 4480-4480/com.example.helloworld D/Android :: The onCreate() event
08-23 10:32:07.683 4480-4480/com.example.helloworld D/Android :: The onStart() event
08-23 10:32:07.685 4480-4480/com.example.helloworld D/Android :: The onResume() event

Android LotCat Window

讓我們嘗試點選 Android 模擬器上的鎖定螢幕按鈕,它將在 Android Studio 的 **LogCat** 視窗中生成以下事件訊息:

08-23 10:32:53.230 4480-4480/com.example.helloworld D/Android :: The onPause() event
08-23 10:32:53.294 4480-4480/com.example.helloworld D/Android :: The onStop() event

讓我們再次嘗試解鎖 Android 模擬器上的螢幕,它將在 Android Studio 的 **LogCat** 視窗中生成以下事件訊息:

08-23 10:34:41.390 4480-4480/com.example.helloworld D/Android :: The onStart() event
08-23 10:34:41.392 4480-4480/com.example.helloworld D/Android :: The onResume() event

接下來,讓我們再次嘗試點選 Android 模擬器上的後退按鈕 Android Back Button,它將在 Android Studio 的 **LogCat** 視窗中生成以下事件訊息,這完成了 Android 應用程式的活動生命週期。

08-23 10:37:24.806 4480-4480/com.example.helloworld D/Android :: The onPause() event
08-23 10:37:25.668 4480-4480/com.example.helloworld D/Android :: The onStop() event
08-23 10:37:25.669 4480-4480/com.example.helloworld D/Android :: The onDestroy() event
廣告 (guǎnggào)
© . All rights reserved.