Jollen 的Android 教學,#1: Android 應用程式模式

jollen 發表於 December 29, 2008 7:58 PM

Android 應用程式的模式(application model),可由以下幾個觀念講起。在真正進入 Android 程式設計前,必須先了解以下幾個名詞觀念。

1. Android package(.apk)

Android 應用程式套件,包含應用程式本身,以及相關的資源檔案。將 apk 套件下載到 Android 手機後,即可安裝至手機上。Android Development Kit 可自動將 apk 套件下載至模擬器或實體手機。

2. task

Task 就是「應用程式」本身,也就是 Android 手機上的圖示,使用者可點擊圖示啟動 task。從開發者的角度來看,task就是一個或多個 activities。

3. process

Process 在作業系統的定義上,指的是「執行中的程式」,在 Android 的應用程式模式中,代表的是低階的執行程式,也就是系統層(kernel)的部份。一個 apk 套件裡的所有程式,都是在一個 process 裡執行。

4. 什麼是 Activity(android.app.Activity)

簡單來說,這昰一個與使用者互動的物件。一個 Activity 類別(class)負責建立視窗(window),我們可以透過 View 類別將UI放置在視窗上。

當 Activity 被啟動(active)或執行(running)時,就是在 foreground(前景)模式,在 foreground 模式的 Activity 會被顯示在螢幕上。

當執行中的 Activity 部份畫面被其他 Activity 蓋掉時,該 Activity 便被暫停(paused),被暫停的 Activity 在系統記億體不足時,便會被清除(kill)。只被蓋掉部份畫面,或是變成透明狀況的 Activity 不會停止,只會進入暫停狀態。

當執行中的 Activity 全部畫面都被其他 Activity 取代時,該 Activity 便被停止(stopped),當系統需要記憶體時,停止中的 Activity 會先被系統清除。

當系統需要清除 Activity 時,系統會要求 Activity 自行結束,或是直接殺掉 Activity 的 process。

5. 什麼是 View(android.app.View)

簡單來說,android.app.View 類別就是手機的 UI。View 負責繪製UI與處理事件(event),Android 利用 View 打造出所謂的 Widgets(元件),利用 Widget 可打造出互動式的使用者介面(interactive GUI)。

Android 應用程式的 UI 從程式碼的角度來看,就是一顆「view tree」,程式設計師可以利用直接撰寫程式碼,或是透過「XML layout」檔的方式,來安排應用程式的 view tree。

另外,還有一個特殊的 View 類別,稱為 ViewGroup(android.view.ViewGrup)。ViewGroup 是一種特別的 View,可以用來「裝載」其他的 View,對 ViewGroup 而言,這些被包含起來的 View 為 Children。

6. Process Types

在一般情況下,Android 應用程式都有一個自已的 Linux process。

在 Android 系統裡,process 的生命週期並不是直接由 Android 應用程式本身來決定,而是由系統來決定,也因此,Android 應用程式的開發者必須正確地撰寫程式碼,並使用 Android 的元件(component),否則系統不管應用程式是否仍在執行,仍會將應用程式的 process 清除(kill)掉。

Android 的 process 有五種類型:foreground process、visible process、service process、background process 與 empty process。

讀者留言 (4)

  • JA 於 July 23, 2009 19:44:

    不好意思JOLLEN我想請問一下

    就是你說eclipse會自動抓到freeruner可是我不管怎麼試都沒辦法抓到

    請問這個問題出在哪?

  • CaptainMoon 於 December 1, 2009 20:50:

    老师真的很强大啊......留个脚印,慢慢拜读。
    o(∩_∩)o 哈哈,不知是否准允这样的脚印呢,嘿嘿

  • Owen 於 February 23, 2010 16:02:

    Jollen你能否帮忙推荐一本全面介绍android系统设计的书籍?还是说android的系统设计其实和linux的观念是一样的?

  • Android APK 於 July 9, 2010 11:59:

    感謝分享。。謝謝。

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。