第四章 Android開發三大基石—Activity、Service和Handler(1)

來源:互聯網
上載者:User

標籤:android開發   android   

第四章 Android開發三大基石—Activity、Service和Handler

    學習Android開發,首先就不得不學習Activity和Service這兩個組件。Activity是有介面的程式,幾乎承載著使用者對應用程式的所有操作。而Service是沒有介面的程式,它是所謂的服務,也叫背景程式。掌握好它們,是我們學習Android開發必不可少的環節。Handler是Android開發中最常用的訊息機制,幾乎所有應用程式都會使用Handler傳遞訊息。可以說,想要學習Android應用開發,就不得不學習Activity、Service的開發,學習如何使用Handler機制。本章就來詳細介紹如何利用它們進行Android開發。

4.1 應用程式的介面—Activity視窗

Activity是Android中最基本也是最為常見的組件。它是Android的核心,是被用來與使用者及Android內部特性互動的組件,在應用程式中用到的所有Activity都需要在AndroidManifest.xml檔案中進行註冊。那麼Activity是怎樣一種組件,它是怎麼樣進行顯示互動的,一個Activity執行個體是如何被管理和運行起來的,Activity生命週期又是怎麼樣的?這些都是我們需要掌握的內容。

4.1.1Activity生命週期

在一個Android應用中,一個Activity通常就是一個單獨的螢幕,一個Activity的生命週期也就是它所在進程的生命週期。在 Android中,Activity 擁有四種基本狀態:

1)活動的(Active/Running) 一個新 Activity 啟動入棧後,它在螢幕最前端,處於棧的最頂端,此時它處於可見並可和使用者互動的啟用狀態;

2)暫停(Paused)  當 Activity 被另一個透明或者 Dialog 樣式的 Activity 覆蓋時的狀態。此時它依然與視窗管理器保持串連,系統繼續維護其內部狀態,所以它仍然可見,但它已經失去了焦點故不可與使用者互動;

3)停止(Stopped) 當Activity 被另外一個 Activity 覆蓋、失去焦點並不可見時處於 Stopped 狀態;

4)待用(Destroyed) 被系統殺死回收或者沒有被啟動時處於 Destroyed狀態。

Activity處於某一狀態是由系統來完成的,我們無法控制。但是,當一個Activity的狀態改變的時候,我們可以通過onXX()方法來擷取到相關的通知資訊。這樣,我們在實現Activity的時候,就可以通過覆蓋onXX()方法在需要的時候來調用它們,4-1所示:

 

圖4-1 Activity生命週期

 

Activity的完整生命週期自第一次調用onCreate()方法開始,直至調用onDestroy()方法為止。Activity的可視生命週期自onStart()方法調用開始,直到應用的onStop()方法調用結束。在此期間,使用者可以在螢幕看見Activity,儘管它也許並不位於前台或者也不與使用者進行互動。Activity的前台生命週期自onResume()方法調用起,至相應的onPause()結束。在此期間,Activity位於前台的最上面並與使用者進行互動。

 

經驗分享:

    以上所說的都是正常情況下的Activity的生命週期。需要注意的是,系統可能因為記憶體不足等原因殺死某進程,當進程被殺死以後,所有的Activity都會被殺死。此時,onPause()是唯一一個在進程被殺死之前必然會調用的方法,onStop() 和 onDestroy() 都有可能不被執行。

 

4.1.2 Activity棧

我們知道,我們是無法控制Activity狀態的,那麼Activity的狀態又是按照何種邏輯來運作的呢?其實,Android 是通過一種 Activity 棧的方式來管理 Activity 的,一個 Activity 的執行個體的狀態決定它在棧中的位置。處於前台的 Activity 總是在棧的頂端,當前台的 Activity 因為異常或其它原因被銷毀時,處於棧第二層的 Activity 將被啟用,上浮到棧頂。當新的 Activity 啟動入棧時,原 Activity 會被壓入到棧的第二層。一個 Activity 在棧中的位置變化反映了它在不同狀態間的轉換。Activity 的狀態與它在棧中的位置關係4-2所示:

圖4-2 Activity棧

 

一個應用程式的優先順序是受最高優先順序的Activity影響的。當決定某個應用程式是否要終結去釋放資源,Android記憶體管理使用棧來決定基於Activity的應用程式的優先順序。

第四章 Android開發三大基石—Activity、Service和Handler(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.