- Android 基礎 (jīchǔ)
- Android - 首頁 (shǒuyè)
- Android - 概述 (gàishuò)
- Android - 環境搭建 (huánjìng dājiàn)
- Android - 架構 (jiàgòu)
- Android - 應用元件 (yìngyòng zǔjiàn)
- Android - Hello World 示例 (shìlì)
- Android - 資源 (zīyuán)
- Android - 活動 (huódòng)
- Android - 服務 (fúwù)
- Android - 廣播接收器 (guǎngbò jiēshòuqì)
- Android - 內容提供者 (nèiróng tígōng zhě)
- Android - 碎片 (suìpiàn)
- Android - 意圖/過濾器 (yìtú/guòlǜqì)
- Android - 使用者介面 (yònghù jiēmiàn)
- Android - UI 佈局 (bùjú)
- Android - UI 控制元件 (kuànjiàn)
- Android - 事件處理 (shìjiàn chǔlǐ)
- Android - 樣式和主題 (yàngshì hé zhǔtí)
- Android - 自定義元件 (zìdìngyì zǔjiàn)
- Android 高階概念 (gāojí gàiniàn)
- Android - 拖放 (tuōfàng)
- Android - 通知 (tōngzhī)
- 基於位置的服務 (jīyú wèizhì de fúwù)
- Android - 傳送郵件 (fāsòng yóujiàn)
- Android - 傳送簡訊 (fāsòng duǎnxìn)
- Android - 電話 (diànhuà)
- 釋出 Android 應用 (fābù Android yìngyòng)
- Android 實用示例 (shíyòng shìlì)
- Android - 警報對話方塊 (jǐngbào duìhuàkuàng)
- Android - 動畫 (dònghuà)
- Android - 音訊捕獲 (yīnpín bǔhuò)
- Android - AudioManager
- Android - 自動完成 (zìdòng wánchéng)
- Android - 最佳實踐 (zuìjiā shíjiàn)
- Android - 藍牙 (lányá)
- Android - 相機 (xiàngjī)
- Android - 剪貼簿 (jiǎntiē bǎn)
- Android - 自定義字型 (zìdìngyì zìtǐ)
- Android - 資料備份 (shùjù bèifèn)
- Android - 開發者工具 (kāifā zhě gōngjù)
- Android - 模擬器 (mǒnìqì)
- Android - Facebook 整合 (jíchéng)
- Android - 手勢 (shǒushì)
- Android - Google 地圖 (dìtú)
- Android - 圖片效果 (túpiàn xiàoguǒ)
- Android - ImageSwitcher
- Android - 內部儲存 (nèibù chǔcún)
- Android - JetPlayer
- Android - JSON 解析器 (jiěxīqì)
- Android - Linkedin 整合 (jíchéng)
- Android - 載入動畫 (jiāzài dònghuà)
- Android - 本地化 (běndìhuà)
- Android - 登入介面 (dēnglù jiēmiàn)
- Android - MediaPlayer
- Android - 多點觸控 (duōdiǎn chùkòng)
- Android - 導航 (dǎoháng)
- Android - 網路連線 (wǎngluò liánjiē)
- Android - NFC 指南 (zhǐnán)
- Android - PHP/MySQL
- Android - 進度圓圈 (jìndù yuánquān)
- Android - ProgressBar
- Android - 推送通知 (tuīsòng tōngzhī)
- Android - RenderScript
- Android - RSS 閱讀器 (yuèdúqì)
- Android - 螢幕錄製 (píngmù lùzhì)
- Android - SDK 管理器 (guǎnlǐqì)
- Android - 感測器 (chuán gǎnqì)
- Android - 會話管理 (huìhuà guǎnlǐ)
- Android - Shared Preferences
- Android - SIP 協議 (xīe yì)
- Android - 拼寫檢查器 (pǐnxiě jiǎncháqì)
- Android - SQLite 資料庫 (shùjùkù)
- Android - Support Library
- Android - 測試 (cèshì)
- Android - 文字轉語音 (wénzì zhuǎn yǔyīn)
- Android - TextureView
- Android - Twitter 整合 (jíchéng)
- Android - UI 設計 (shèjì)
- Android - UI 模式 (mòshì)
- Android - UI 測試 (cèshì)
- Android - WebView 佈局 (bùjú)
- Android - Wi-Fi
- Android - 小部件 (xiǎo wèijiàn)
- Android - XML 解析器 (jiěxīqì)
- Android 實用資源 (shíyòng zīyuán)
- Android - 問答 (wèndá)
- Android - 實用資源 (shíyòng zīyuán)
- Android - 討論 (tǎolùn)
Android - 活動 (huódòng)
活動代表著一個帶有使用者介面的單個螢幕,就像Java的視窗或框架一樣。Android 活動是 ContextThemeWrapper 類的子類。
如果您使用過 C、C++ 或 Java 程式語言,那麼您一定見過您的程式從 `main()` 函式開始。類似地,Android 系統在其活動中啟動其程式,從呼叫 `onCreate()` 回撥方法開始。有一系列回撥方法啟動活動,還有一系列回撥方法關閉活動,如下所示的活動生命週期圖:(圖片來自:android.com)
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` 檔案中宣告,並且您的應用程式的主活動必須在清單中宣告,幷包含一個 `
<?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 執行應用程式,請開啟您的專案的活動檔案之一,然後單擊工具欄中的執行
圖示。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 模擬器上的鎖定螢幕按鈕,它將在 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 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
