Android 程式開發簡介
課程內 容  Android 簡介  Android 作業系統架構  Android 程式開發基礎     Android 組件     組件生命週期  Android 程式開發實例
Android 簡介
Android 簡介   Android 是以 Linux 為基礎的開放源碼作業系統,最初目    標只在手機上使用,後來亦應用到平板電腦及其他領域上   Android 最初由 Andy Rubin 創辦,再由 Google 收購注資  ...
Android 作業系統架構
Android 作業系統架構  Android 作業系統架構由5個部分組成,分別是   :   1. Applications ( 應用程式 )   2. Application Framework ( 應用程式架構 )   3. Libra...
Android 作業系統架構應用程式應用程式架構                 Android                 執行環境函式庫Linux 核心
Android 作業系統架構 1. Application ( 應用程式 )     在 Android SDK 所用的手機模擬器及未來實體的手機      中,都會有一系列以 Java 語言撰寫的核心應用程式     應用程式包含電子郵件...
Android 作業系統架構 2. Application Framework ( 應用程式架構 )     Android SDK 定義了能讓開發者可以完整使用與核心      應用程式相同的應用程式標準介面 (API)     應用程式...
Android 作業系統架構    目前所有的應用程式是由 Services( 服務 ) 及     Systems( 系統 ) 來組成,包含有:     • Views System( 建構程式原件 ) :用來建構一個應用程式的基     ...
Android 作業系統架構     • Activity Manager( 活動管理員 ) :管理所有應用程式的生命週       期及一般性的回溯導航處理 (navigation backstack) 。例如:       開啟應用程式要用...
Android 作業系統架構 3. Libraries ( 函式庫 )     在 Android SDK( 軟體開發套件 ) 包含一組系統元件,      可以讓開發者呼叫來使用,而這一組系統元件使用的      是 C/C++ 的函式庫,...
Android 作業系統架構     • Media Framework :主要是以 PacketVideo 公司的       OpenCORE 為基礎所發展成多媒體函式庫,有支援多種聲音       及影像格式。例如:       MPEG...
Android 作業系統架構 4. Android Runtime (Android 執行環境 )     在 Android SDK( 軟體開發套件 ) 的 Android Runtime      分成二個重要的元件來執行系統,雖然 An...
Android 作業系統架構    Core Libraries( 核心函式庫 ) 裡頭已包含絕大多數     Java 所需要呼用的函式,接著每一個 Android 應用程     式都會以自屬的 process( 程序 ) 。而且 And...
Android 作業系統架構 5. Linux Kernel (Linux 核心 )     Android SDK 的作業系統是 Linux ,版本為 2.6 版。       而所提供的核心系統服務,如下所述:     •   安全性 (...
Android 程式開發基礎
Android 程式開發基礎  所有的 Android 應用程式都以 Java 語言撰寫,並以 .apk   檔的格式來發布  所有打包在一個 .apk 檔中的程式代碼,成為一個完整的   應用程式 (application)    每一...
Android 程式開發基礎  一個應用程式可以使用其他應用程式的元件  Android 的應用程式無單一的進入點   ( 例如:無C語言中的 main() 函數 )  Android 程式反而是由組件組成,系統可以視需求和狀況   所需...
Android 程式開發基礎- Android 組件  Activities ( 活動 ):    Activity 是個 UI Program ,提供使用者一個互動式的     介面功能    一個應用程式可由一或多個 Activity...
Android 程式開發基礎- Android 組件  Activities:     Activity 負責建立視窗 (window) ,我們可以透過      View 類別將 UI 放置在視窗上     View 負責繪製 UI 與...
Android 程式開發基礎- Android 組件  Services ( 背景程序 ):    Service 是一種沒有用戶介面的背景程序 (background     process)    所有 Service 須繼承 Ser...
Android 程式開發基礎- Android 組件  Services:    覆載( override ) onStart() 方法( method )在     Service 被啟動時,執行我們想要的背景功能    覆載 onDe...
Android 程式開發基礎- Android 組件  Broadcast receivers ( 廣播接收器 ):    Broadcast receiver 是負責接收和處理廣播信息的組件    所有 Receivers 須繼承 Br...
Android 程式開發基礎- Android 組件  Content providers ( 資料提供器 ):    Content provider 將一個應用程式某部分的資料提供     給其他應用程式使用    Content p...
Android 程式開發基礎- Android 組件  啟 動組件: Intents    Activities 、 Services 、和 Broadcast Receivers 都是     由稱為 intents 的異步消息 (asy...
Android 程式開發基礎- Android 組件    舉例:使用 Intent 物件     啟動一個 Activity
Android 程式開發基礎- Android 組件
Android 程式開發基礎-組件生命週期  Activity 生命週期:     每個 Activity 有四個生命狀態:     1. Active / Running :當一個 Activity 在螢幕的最        上層時 ( ...
Android 程式開發基礎-組件生命週期  Activity 生命週期:     每個 Activity 有四個生命狀態:     3. Stopped :如果一個 Activity 被其它的 Activity 完        全的遮住...
Android 程式開發基礎-組件生命週期    Activity 生命週期       Entire      Lifetime       Visible      Lifetime Foreground  Lifetime
Android 程式開發基礎-組件生命週期  Activity 生命週期:     上圖裏有三個主要迴路   1. Entire Lifetime ( 完整生命週期 ) :      一個 Activity 的 entire lifetim...
Android 程式開發基礎-組件生命週期  Activity 生命週期:     上圖裏有三個主要迴路   2. Visible Lifetime ( 可視生命週期 ) :     一個 Activity 的 visible lifeti...
Android 程式開發基礎-組件生命週期  Activity 生命週期:     上圖裏有三個主要迴路   3. Foreground Lifetime ( 前景生命週期 ) :      一個 foreground lifetime 則...
Android 程式開發基礎-組件生命週期     Service 生命週期  Entire Lifetime  Active Lifetime
Android 程式開發基礎-組件生命週期  Service 生命週期:    每個 Service 有兩種生命狀態:   1.Started :當一個組件 ( 例如:一個 Activity) 呼叫     startService() 的...
Android 程式開發基礎-組件生命週期  Service 生命週期:    每個 Service 有兩種生命狀態:   2.Bound :當一個組件 ( 例如:一個 Activity) 呼叫     bindService() 的時候,...
Android 開發實例
Android 程式開發實例  首先,我們需要模擬器 (AVD, Android Virtual Device)   來安裝並執行我們的程式    從 Eclipse ,選擇 Window > Android AVD Manager   ...
Android 程式開發實例
Android 程式開發實例  接下來建置一個新的 Android project:    在 Eclipse 選擇 File > New > Android Project.    在 New Android Project 視窗中填入...
Android 程式開發實例
Android 程式開發實例  Eclipse 會產生一個新的 project ,在 src/com/example   目錄中新增一個 HelloAndroid.java 的檔案
Android 程式開發實例 專案檔 案結構   請注意 Eclipse IDE 左邊的 Package Explorer 。每一個 Android    專案包含了四大檔案區塊:     • src/ : 程式中所有的 Java 原始碼 ...
Android 程式開發實例  修改 HelloAndroid.java ,加入一個 TextView ,再讓它顯   示” Hello, Android” 的文字  在 Eclipse ,執行 Run > Run  Run As > A...
Android 程式開發實例
Q&A      Thank you
Upcoming SlideShare
Loading in …5
×

Android程式開發簡介

3,561 views

Published on

Android程式開發簡介

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,561
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
75
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • Architecture: (stack diagram) - Applications: a set of core applications, e.g. browser, calendar... - Application Framework: framework APIs and a set of services and systems * View: a rich and extensible set of UI components to use * Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data * A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files * A Notification Manager that enables all applications to display custom alerts in the status bar * An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack * To be more... -Libraries: a set of C/C++ libraries used by various components of the Android system * System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices * Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG * Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications * LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view * SGL - the underlying 2D graphics engine * 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer * FreeType - bitmap and vector font rendering * SQLite - a powerful and lightweight relational database engine available to all applications -Android Runtime * Core libraries: provides most of the functionality available in the core libraries of the Java programming language * Dalvik VM: an optimized, register-based VM for running Android Applications, relying on the Linux kernel for underlying functionality. - Linux Kernel
  • Activities: For example, an activity might present a list of menu items users can choose from or it might display photographs along with their captions. A text messaging application might have one activity that shows a list of contacts to send messages to, a second activity to write the message to the chosen contact, and other activities to review old messages or change settings. Though they work together to form a cohesive user interface, each activity is independent of the others.
  • Services: For example, a service might play background music as the user attends to other matters, or it might fetch data over the network or calculate something and provide the result to activities that need it. A prime example is a media player playing songs from a play list. The player application would probably have one or more activities that allow the user to choose songs and start playing them. However, the music playback itself would not be handled by an activity because users will expect the music to keep playing even after they leave the player and begin something different. To keep the music going, the media player activity could start a service to run in the background. The system would then keep the music playback service running even after the activity that started it leaves the screen. Broadcast receivers: Many broadcasts originate in system code — for example, announcements that the timezone has changed, that the battery is low, that a picture has been taken, or that the user changed a language preference. Applications can also initiate broadcasts — for example, to let other applications know that some data has been downloaded to the device and is available for them to use.
  • Services: For example, a service might play background music as the user attends to other matters, or it might fetch data over the network or calculate something and provide the result to activities that need it. A prime example is a media player playing songs from a play list. The player application would probably have one or more activities that allow the user to choose songs and start playing them. However, the music playback itself would not be handled by an activity because users will expect the music to keep playing even after they leave the player and begin something different. To keep the music going, the media player activity could start a service to run in the background. The system would then keep the music playback service running even after the activity that started it leaves the screen. Broadcast receivers: Many broadcasts originate in system code — for example, announcements that the timezone has changed, that the battery is low, that a picture has been taken, or that the user changed a language preference. Applications can also initiate broadcasts — for example, to let other applications know that some data has been downloaded to the device and is available for them to use.
  • Services: For example, a service might play background music as the user attends to other matters, or it might fetch data over the network or calculate something and provide the result to activities that need it. A prime example is a media player playing songs from a play list. The player application would probably have one or more activities that allow the user to choose songs and start playing them. However, the music playback itself would not be handled by an activity because users will expect the music to keep playing even after they leave the player and begin something different. To keep the music going, the media player activity could start a service to run in the background. The system would then keep the music playback service running even after the activity that started it leaves the screen. Broadcast receivers: Many broadcasts originate in system code — for example, announcements that the timezone has changed, that the battery is low, that a picture has been taken, or that the user changed a language preference. Applications can also initiate broadcasts — for example, to let other applications know that some data has been downloaded to the device and is available for them to use.
  • Content providers: The data can be stored in the file system, in an SQLite database, or in any other manner that makes sense. The content provider extends the ContentProvider base class to implement a standard set of methods that enable other applications to retrieve and store data of the type it controls. However, applications do not call these methods directly. Rather they use a ContentResolver object and call its methods instead. A ContentResolver can talk to any content provider; it cooperates with the provider to manage any interprocess communication that's involved.
  • Activating Components: intents For activities and services, it names the action being requested and specifies the URI of the data to act on, among other things. For example, it might convey a request for an activity to present an image to the user or let the user edit some text. For broadcast receivers, the Intent object names the action being announced. For example, it might announce to interested parties that the camera button has been pressed.
  • Android程式開發簡介

    1. 1. Android 程式開發簡介
    2. 2. 課程內 容  Android 簡介  Android 作業系統架構  Android 程式開發基礎  Android 組件  組件生命週期  Android 程式開發實例
    3. 3. Android 簡介
    4. 4. Android 簡介  Android 是以 Linux 為基礎的開放源碼作業系統,最初目 標只在手機上使用,後來亦應用到平板電腦及其他領域上  Android 最初由 Andy Rubin 創辦,再由 Google 收購注資 ,並拉攏多家製造商組成開放手機聯盟( Open Handset Alliance , OHA )開發改良  OHA 提供 Android 開源,手機和電腦製造商無需支付權 利金,可以免費將 Android 運用在手機和電腦上  以 Java 為編程語言,透過 Android SDK ( 軟體開發套件 ) 在 Android 平台上開發應用程式
    5. 5. Android 作業系統架構
    6. 6. Android 作業系統架構  Android 作業系統架構由5個部分組成,分別是 : 1. Applications ( 應用程式 ) 2. Application Framework ( 應用程式架構 ) 3. Libraries ( 函式庫 ) 4. Android Runtime (Android 執行環境 ) 5. Linux Kernel (Linux 核心 )
    7. 7. Android 作業系統架構應用程式應用程式架構 Android 執行環境函式庫Linux 核心
    8. 8. Android 作業系統架構 1. Application ( 應用程式 )  在 Android SDK 所用的手機模擬器及未來實體的手機 中,都會有一系列以 Java 語言撰寫的核心應用程式  應用程式包含電子郵件程式、簡訊程式、日曆、地圖 、瀏覽器、聯絡人與其它應用程式,讓使用者一開始 就可以使用這些基本的功能來操作 Android 手機。
    9. 9. Android 作業系統架構 2. Application Framework ( 應用程式架構 )  Android SDK 定義了能讓開發者可以完整使用與核心 應用程式相同的應用程式標準介面 (API)  應用程式架構是為了要簡化元件的重新利用而設計的  應用程式可以發佈功能並為其它應用程式所使用,但 是要受限於應用程式架構的安全限制,使用者也用同 樣的機制用來新增、置換元件
    10. 10. Android 作業系統架構  目前所有的應用程式是由 Services( 服務 ) 及 Systems( 系統 ) 來組成,包含有: • Views System( 建構程式原件 ) :用來建構一個應用程式的基 本原件,包含了在開發系統畫面時,常用的 lists 、 grids 、 text boxes 、 buttons 控制項,甚至是嵌入式 的瀏覽器。有興趣想要看程式控制項的讀者可以參考下述網址 http://developer.android.com/guide/tutorials/views/index.html • Content Providers( 內容提供者 ) :可以用來讓應用程式可以 存取或分享資料給其它應用程式 • Resource Manager( 資源管理員 ) :提供各種非程式碼的資源 讓應用程式去使用,例如:本地化字串、圖形或排版相關檔案 • Notification Manager( 訊息管理員 ) :提供應用程式在狀態列 (Status Bar) 的地方顯示應用程式自定的警示訊息 (Alert)
    11. 11. Android 作業系統架構 • Activity Manager( 活動管理員 ) :管理所有應用程式的生命週 期及一般性的回溯導航處理 (navigation backstack) 。例如: 開啟應用程式要用到的資源準備及關閉應用程式時,釋放出記 憶體及相關資源等工作 • Window Manager( 視窗管理員 ) :用來管理所有開啟的視窗 程式 • Location Manager :用來管理地圖服務的相關功能 • Telephony Manager :用來管理有關使用者撥打與接收電話 的相關功能 • Package Manager :管理所有安裝在 Android 系統內的程式
    12. 12. Android 作業系統架構 3. Libraries ( 函式庫 )  在 Android SDK( 軟體開發套件 ) 包含一組系統元件, 可以讓開發者呼叫來使用,而這一組系統元件使用的 是 C/C++ 的函式庫,開發者可以透過應用程式架構使 用這些功能  核心函式庫列表如下: • Surface Manager( 外觀管理員 ) :主要的功能是讓開發者可以 去存取顯示系統及管理的功能,在「顯示」與「存取操作」間 的對應、互動以及實現無接縫的 2D/3D 多應用程式之間的整 合。例如:在 2D 、 2D 顯示上的合成、疊合動作 • Open GL | ES :主要是依 OpenGL ES 1.0 規範所定義的 3D 繪圖引擎。可以將硬體的 3D 功能做最佳化的處理顯示 • SGL :主要是處理有關顯示 2D 方面的繪圖引擎
    13. 13. Android 作業系統架構 • Media Framework :主要是以 PacketVideo 公司的 OpenCORE 為基礎所發展成多媒體函式庫,有支援多種聲音 及影像格式。例如: MPEG4 、 H.264 、 MP3 、 AAC 、 AMR 、 JPG 、 PNG 、 GIF 等格式 • Free Type :主要是處理有關顯示點陣圖及向量字形方面的處 理 • SSL :是 Secure Socket Layer 的縮寫,主要是處理有關保護 網頁通訊的協定 • SQLite : SQLite 也是一套開放性原始碼的關連式資料庫,其 特點在於輕量性方面的設計結構,更適合在手機上使用 • Web Kit :是一個的網頁瀏覽器引擎,讓 Android 發展出專屬 的瀏覽器,也可以讓開發者利用這個引擎來做不同的應用 • libc :就是 BSD 標準系統 C 函式庫。但是,針對 Linux 嵌入 式裝置進行過最佳化的調整
    14. 14. Android 作業系統架構 4. Android Runtime (Android 執行環境 )  在 Android SDK( 軟體開發套件 ) 的 Android Runtime 分成二個重要的元件來執行系統,雖然 Android 是用 Java 來開發、撰寫應用程式,但卻不使用 Java Runtime 來執行 Java 程式,而是自行研發 Android Runtime 來執行程式  這二個重要元件分別是 Core Libraries( 核心函式庫 ) 和 Dalvik Virtual Machine(Dalvik 虛擬機器 )
    15. 15. Android 作業系統架構  Core Libraries( 核心函式庫 ) 裡頭已包含絕大多數 Java 所需要呼用的函式,接著每一個 Android 應用程 式都會以自屬的 process( 程序 ) 。而且 Android 不是 用一個 Dalvik 虛擬機器來同時執行多個 Android 應用 程式,而是每個 Android 應用程式都用一個自屬的 Dalvik 虛擬機器來執行。  Dalvik Virtual Machine(Dalvik 虛擬機器 ) 是一種暫存 器型態的虛擬機器。在撰寫開發時就已經設想用最少 的記憶體資源來執行,以及前述的「同時可執行多個 VM 個體」。這樣的設計,讓系統在執行程式可以最佳 化的方式來執行,節省更多的資源。
    16. 16. Android 作業系統架構 5. Linux Kernel (Linux 核心 )  Android SDK 的作業系統是 Linux ,版本為 2.6 版。 而所提供的核心系統服務,如下所述: • 安全性 (Security) • 記憶體管理 (Memory Management) • 行程管理 (Process Management) • 網路堆疊 (Network Stack) • 驅動程式模型 (Driver Model) 包含常規的驅動程式: – Display Driver – Keypad Driver – Camera Driver – WiFi Driver – Flash Memory Driver – Audio Driver – Binder(IPC) Driver – Power Management
    17. 17. Android 程式開發基礎
    18. 18. Android 程式開發基礎  所有的 Android 應用程式都以 Java 語言撰寫,並以 .apk 檔的格式來發布  所有打包在一個 .apk 檔中的程式代碼,成為一個完整的 應用程式 (application)  每一個應用程式原則上都會在自己專屬的 Linux 程序 (process) 中執行  每一個 Linux 程序有自己的 Java Virtual Machine , 所以每一個應用程式的代碼和其他的應用程式分開執  每一個應用程式會被指定一個獨特的 Linux user ID , 因此讀寫權限會被設定,相關的程式檔案只有程式本 身才讀取得到(但有其他的方式和其他的程式分享資 料)
    19. 19. Android 程式開發基礎  一個應用程式可以使用其他應用程式的元件  Android 的應用程式無單一的進入點 ( 例如:無C語言中的 main() 函數 )  Android 程式反而是由組件組成,系統可以視需求和狀況 所需來執行  以下是 Android 的四種組件 (Application Components) :  Activities  Services  Broadcast receivers  Content providers
    20. 20. Android 程式開發基礎- Android 組件  Activities ( 活動 ):  Activity 是個 UI Program ,提供使用者一個互動式的 介面功能  一個應用程式可由一或多個 Activity 組成  所有 Activity 須繼承 Activity 的基類
    21. 21. Android 程式開發基礎- Android 組件  Activities:  Activity 負責建立視窗 (window) ,我們可以透過 View 類別將 UI 放置在視窗上  View 負責繪製 UI 與處理事件( event )  我們可以使用 Activity.setContentView() 將 view hierarchy 放入 Activity 的視窗中  Content view 是 view hierarchy 根部的 View 物件
    22. 22. Android 程式開發基礎- Android 組件  Services ( 背景程序 ):  Service 是一種沒有用戶介面的背景程序 (background process)  所有 Service 須繼承 Service 的基類  Service 跟 Activity 的级别差不多,但不能自己運行, 需要透過某個 Activity 或其他 Context 對象來 調: Context.startService() 和 Context.bindService()  Service 本身並不是一個 thread  Android 應用程式是在 Activity 裡啟動與停止 Service
    23. 23. Android 程式開發基礎- Android 組件  Services:  覆載( override ) onStart() 方法( method )在 Service 被啟動時,執行我們想要的背景功能  覆載 onDestroy() 方法在 Service 被停止時,停止執 行中的背景功能
    24. 24. Android 程式開發基礎- Android 組件  Broadcast receivers ( 廣播接收器 ):  Broadcast receiver 是負責接收和處理廣播信息的組件  所有 Receivers 須繼承 BroadcastReceiver 的基類別  Broadcast receiver 沒有用戶介面,但可以按照接收的 信息啟動 Activity ,或者透過 NotificationManager 通 知使用者
    25. 25. Android 程式開發基礎- Android 組件  Content providers ( 資料提供器 ):  Content provider 將一個應用程式某部分的資料提供 給其他應用程式使用  Content provider 繼承了 ContentProvider 基類別,提 供了一個標準的介面和方法,讓其他程式讀取和儲存 資料  當系統收到來自 ContentResolver 的要求,就會啟動對 應的 Content provider
    26. 26. Android 程式開發基礎- Android 組件  啟 動組件: Intents  Activities 、 Services 、和 Broadcast Receivers 都是 由稱為 intents 的異步消息 (asynchronous message) 來啟動  所謂 intent 就是一個包含了啟動消息資料的 Intent 物 件  關閉組件  無需要主動關閉 Broadcast receivers 和 Content providers  Activity 可以使用 finish() 或 finishActivity() 關閉  Service 可以使用 stopSelf() 或 stopService() 關閉
    27. 27. Android 程式開發基礎- Android 組件  舉例:使用 Intent 物件 啟動一個 Activity
    28. 28. Android 程式開發基礎- Android 組件
    29. 29. Android 程式開發基礎-組件生命週期  Activity 生命週期:  每個 Activity 有四個生命狀態: 1. Active / Running :當一個 Activity 在螢幕的最 上層時 ( 堆疊的最頂端 ) ,它就是屬於 Active 或 Running 的狀態 2. Paused :如果一個 Activity 失去焦點 (focus) 但 還看得到它的畫面,那失去焦點的這個 Activity 則處在 Paused 的狀態。失去焦點的 Activity 它還 是完全活著的,並沒有消失。 ( 活著的意思是指 Activity 自已本身所有的狀態及資料都還是存在的 也跟視窗管理程式 window manager 保持連繫著 ) 像這種 Paused 的 Activity ,可能在系統的記憶體 不足的時後,被系統自動移除掉
    30. 30. Android 程式開發基礎-組件生命週期  Activity 生命週期:  每個 Activity 有四個生命狀態: 3. Stopped :如果一個 Activity 被其它的 Activity 完 全的遮住時,這個被遮的 Activity 處於 stop 的狀 態,它仍然保有全部的狀態及資料,但因為它已 不再被使用者看見,所以它的畫面是被隱藏起來 的 ( 畫面不需要更新 ) 。當系統記憶體不足時,這 種 Stop 狀態的 Activity 是最先被系統考慮拿來釋 放記憶體的 4. Finished : 當一個 Activity 處於 Pause 或 Stop 的狀態時,系統可以要求 Activity 結束 (Finish) 或 直接移除 (Kill) 它。當它需要再度呈現在使用者面 前時,它必需要能完整的重新啟動及回復先前的 狀態
    31. 31. Android 程式開發基礎-組件生命週期  Activity 生命週期 Entire Lifetime Visible Lifetime Foreground Lifetime
    32. 32. Android 程式開發基礎-組件生命週期  Activity 生命週期:  上圖裏有三個主要迴路 1. Entire Lifetime ( 完整生命週期 ) : 一個 Activity 的 entire lifetime 是由 onCreate(Bundle) 開始,一直到 onDestroy() 結束。一個 Activity 可以把 所有的資源設定寫在 onCreate 裏,一直到 onDestroy() 時,再釋放出來。 比如說,你需要一個執行緒在背景執行網路下載資料 ,這個 thread 就可以在 onCreate() 裏建立起來,一直 到 onDestroy() 再把 thread 釋放不要用
    33. 33. Android 程式開發基礎-組件生命週期  Activity 生命週期:  上圖裏有三個主要迴路 2. Visible Lifetime ( 可視生命週期 ) : 一個 Activity 的 visible lifetime 則是指在 onStart() 到 onStop() 之間,算是“可視生命時期”,在這段時間內, 使用者可以在螢幕上看見 Activity ,但此 Activity 不見 得一定在前景直接跟使用者可直接互動。 比如說:你可以在 onStart() 註冊一個 BroadcastReceiver 用來監控並改變你的 UI ,當使用 者不想再看你所呈現的結果時,在 onStop() 移除註冊 的 BroadcastReceiver 。 onStart() 跟 onStop() 可以在 Activity 在 visible 及 hidden 兩個狀態切換時多次被呼 叫執行。
    34. 34. Android 程式開發基礎-組件生命週期  Activity 生命週期:  上圖裏有三個主要迴路 3. Foreground Lifetime ( 前景生命週期 ) : 一個 foreground lifetime 則是指 onResume() 到 onPause() 之間,在這個時期的 Activity 是在所有的 Activity 的前面,並且直接跟使用者進行互動,所以這 段時期指的就是圖裏的「 Activity is running 」。 一個 Activity 能很頻繁的在 resume 及 pause 這兩個狀 態切換,比如:當一個裝置進行睡眠時,當一個 Activity 的結果被傳送,當一個新的 intent 被傳送時。 所以在 onResume() 及 onPause() 裏實作的程式應盡量 精簡。
    35. 35. Android 程式開發基礎-組件生命週期  Service 生命週期 Entire Lifetime Active Lifetime
    36. 36. Android 程式開發基礎-組件生命週期  Service 生命週期:  每個 Service 有兩種生命狀態: 1.Started :當一個組件 ( 例如:一個 Activity) 呼叫 startService() 的時候, Service 就進入 Started 狀態。 一個 Service 一旦被啟動,就會一直在背景運行,就算 啟動的組件被關閉還是繼續運行。 一般而言,一個被啟動的 Service 只會執行一個功能, 執行完畢後並不會回傳結果給啟動的組件。例如:某 個 Service 會透過網路下載或上傳一個檔案。當傳輸工 作結束,該 Service 應該自動關閉。
    37. 37. Android 程式開發基礎-組件生命週期  Service 生命週期:  每個 Service 有兩種生命狀態: 2.Bound :當一個組件 ( 例如:一個 Activity) 呼叫 bindService() 的時候, Service 就進入 Bound 狀態。 處於 Bound 狀態的 Service ,和呼叫的組件的關係類 似 client-server 介面,讓組件和 Service 互相溝通、傳 送與接收信息,甚至可以透過 IPC 跨 process 交換信 息。 一個處於 Bound 狀態的 Service ,只要有一個對應的 組件就會運行。多個組件可以同時 bind 到同一個 Service ,但當所有的組件 unbind 的話,該 Service 也 會關閉。
    38. 38. Android 開發實例
    39. 39. Android 程式開發實例  首先,我們需要模擬器 (AVD, Android Virtual Device) 來安裝並執行我們的程式  從 Eclipse ,選擇 Window > Android AVD Manager  填寫 AVD 的屬性: • Name-AVD 名稱 • Target-Android 系統版本 • SD Card- 模擬 SD 卡容量或指定 SD 卡影像檔 • Skin-AVD 外觀 • Hardware- 硬體屬性  點擊 Create AVD
    40. 40. Android 程式開發實例
    41. 41. Android 程式開發實例  接下來建置一個新的 Android project:  在 Eclipse 選擇 File > New > Android Project.  在 New Android Project 視窗中填入以下的數據 : • Project name: HelloAndroid • Application name: Hello Android • Package name: com.example.HelloAndroid • Create Activity: HelloAndroid • Min SDK Version: 8  點擊 Finish.
    42. 42. Android 程式開發實例
    43. 43. Android 程式開發實例  Eclipse 會產生一個新的 project ,在 src/com/example 目錄中新增一個 HelloAndroid.java 的檔案
    44. 44. Android 程式開發實例 專案檔 案結構  請注意 Eclipse IDE 左邊的 Package Explorer 。每一個 Android 專案包含了四大檔案區塊: • src/ : 程式中所有的 Java 原始碼 • gen/ : Eclipse 會在此針對專案的 所有資源,自動產生一個名為 R.java 的 index file 。我們可以使用 index ID 來 讀取所需要的資源 • res/ : 程式中所有的資源,例如:圖資、 字串、 Layout 檔等 • AndroidManifest.xml : 描述程式信息 的檔案
    45. 45. Android 程式開發實例  修改 HelloAndroid.java ,加入一個 TextView ,再讓它顯 示” Hello, Android” 的文字  在 Eclipse ,執行 Run > Run  Run As > Android Application > OK
    46. 46. Android 程式開發實例
    47. 47. Q&A Thank you

    ×