應用程序的內容——概念性描述

一、運行在Linux環境下

 1、在默認情況下,每一個應用程序運行於他們的Linux進程中

 2、每個進程具有自己的虛擬機,每個應用程序運行於獨立的環境中

 3、在默認情況下,沒有應用程序具有唯一的Linux用戶id。通過設置權限讓應用程序只對用戶和應用程序本身可見,也有一些方法可以讓他們暴露給其他應用程序

二、組成部分(活動、廣播接收器、服務、內容提供者)

1、Activity,每個活動都被實現爲一個獨立的類,並從活動基類中繼承而來,活動類將會顯示由視圖(View)控件組成的用戶接口,並對事件(Event)做出響應。

2、BroadcastReceiver,用於讓應用程序對一個外部事件做出響應。例如,電話呼入事件、數據網絡可用通知等

3、Service,一個服務是一個具有一段較長生命週期但沒有用戶界面的程序。例如,一個正在從播放列表中播放歌曲的媒體播放器在後臺運行

4、ContentProvider,一個內容提供者類實現一組標準的方法,從而能夠讓其他應用程序保存或讀取此內容提供者出來的各種數據類型。(應用程序能夠將他們的數據保存到文件或SQLite數據庫中,甚至是任何遊戲的設備中)

三、生命週期

android進程的類型包括(按執行的優先級)

1、前臺(Foreground)進程

  與用戶當前正在做的事情密切相關,不同的應用程序組件能夠通過不同的方法使他的宿主進程移到前臺。當下面任何一個條件滿足時,都可以考慮將進程遷移到前臺

  1>進程正在屏幕的最前端運行一個與用戶交互的Acitivity(它的onResume()方法被調用)

  2>進程有一個正在運行的BroadcastReceiver(它的BroadcastReceiver.onReceive()方法正在執行)

  3>進程有一個Service,並且在Service的某個方法(Service.onCreate()、Service.onStart()或者Service.onDestroy())內有正在執行的代碼

2、可見(Visible)進程

  它有一個可以被用戶從屏幕上看見的Acitivity,但不在前臺——其onPause()方法被調用。(這樣的進程很重要,一般不允許被殺死,除非爲了保證前臺進程的運行不得不這樣做)

3、服務(service)進程

  有一個已經用startService()方法氣得的Service,雖然這些進程用戶無法直接看到,但它們做的事情卻是用戶所關心的。(系統將一直運行這些進程,除非內存不足以維持所有的前臺進程和可見進程)

4、後臺(background)進程

 擁有一個當前用戶看不到的Acitivity(它的onStop()方法被調用),這些進程對用戶體驗沒有直接的影響。如果它們正確執行了Activity生命週期,系統可以在任意時刻殺死進程來回收內存,並提供給前面3種類型的進程使用。系統中通常有很多這樣的進程在進行,因此要將這些進程保存在LRU列表中,以確保當內存不足時用戶最近看到的進程最後一個被殺死。

5、空(Empty)進程

  不包含任何處於活動狀態的應用程序組件。保留這種進程的唯一原因是,當下次應用程序的某個組件需要運行時,不需要重新創建進程,這樣可以提高啓動速度。

 

活動的生命週期

1>運行活動的情景:當一個活動被啓動時,活動中的onCreate()、onStart()、onResume()方法被依次調用,活動對應的界面出現在屏幕上

2>活動被“覆蓋”的情景:android的活動一般都佔據一個完整的屏幕,從當前活動啓動另一個活動時,另一個活動將被啓動到前臺,當前活動轉入後臺,這時的onPasuse()方法將被調用,活動轉入後臺運行。如果活動變爲不可見,還將調用onStop()方法。

3>活動被恢復的情景:當界面上最前面的活動退出後,它所覆蓋的活動將被恢復,這時onResume()方法將被調用,活動重新轉入前臺運行

4>活動完全退出的情景:當使用回退(Back)按鈕退出活動時,onDestroy()方法將被調用,活動關閉。如果系統缺少內存,也會殺死後臺的活動,其中優先殺死不可見的活動,可見的活動一般不會被殺死

服務的生命週期

1>使用startService運行服務的情景:使用這種方法啓動服務,服務的onCreate()和onStart()兩個方法將被依次調用, 服務會在後臺運行直到退出,退出時將調用onDestroy()方法

2>使用bindService運行服務的情景:使用這種方法啓動服務,調用者(客戶端)將獲得和服務交互的類,通過其調用時服務的相關內容會處於活動狀態。

廣播接收器的生命週期

廣播接收器有一個單一的回調方法onReceive(),當廣播消息到達接收器,android將調用這個方法,並傳遞給包含在這個消息中的Intent對象。廣播接收器只有在這個方法的執行過程中才處於活動狀態,當onReceive()返回後,將不再處於活動狀態。

 

 

發佈了47 篇原創文章 · 獲贊 10 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章