新聞中心
Android一經(jīng)推出就廣受開發(fā)人員的喜愛。大家可以通過開源的代碼進行相應(yīng)的修改就能很好的滿足自己所需要的功能。在這里先來具體了解一下Android生命周期的相關(guān)概念,以方便大家今后的學習。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、路南網(wǎng)站維護、網(wǎng)站推廣。
在眾人的猜測和期盼中,Google 終于發(fā)布了 Android SDK,為 “GPhone” 這個曾經(jīng)充滿爭議的新名詞下了一個官方定義。Google 并沒有轉(zhuǎn)行做硬件,我們可能還要等一年左右的時間才能觸摸到真正的 “GPhone”。但是作為開發(fā)人員,有了 SDK 和 emulator 我們就可以提前開始 “GPhone 之旅”了。#t#
我看了一些 Android SDK 的文檔和視頻,在模擬世界中使用了一把 GPhone —— 其實就是在電腦上運行了一下 Android 的 emulator。在激動之余,我也對 Android 有了些許認識。睡覺前花了一些時間整理出來和大家分享,也請大家指正。
Android 是一構(gòu)建在 Linux 之上的開源移動開發(fā)平臺,在 Android 中,多數(shù)情況下每個程序都是在各自獨立的 Linux 進程中運行的。當一個程序或其某些部分被請求時,它的進程就“出生”了;當這個程序沒有必要再運行下去且系統(tǒng)需要回收這個進程的內(nèi)存用于其他程序時,這個 進程就“死亡”了。
可以看出,Android生命周期是由系統(tǒng)控制而非程序自身直接控制。這和我們編寫桌面應(yīng)用程序時的思維有一些不同,一個桌面應(yīng)用程序的進程也是在其他進程或用戶請求時被創(chuàng) 建,但是往往是在程序自身收到關(guān)閉請求后執(zhí)行一個特定的動作(比如從 main 函數(shù)中 return)而導致進程結(jié)束的。要想做好某種類型的程序或者某種平臺下的程序的開發(fā),最關(guān)鍵的就是要弄清楚這種類型的程序或整個平臺下的程序的一般工作 模式并熟記在心。Android生命周期控制就是屬于這個范疇——我的個人理解:)
在 Android 系統(tǒng)中,當某個 activity(應(yīng)用程序的一個“幀”)調(diào)用 startActivity(myIntent) 時,系統(tǒng)會在所有已經(jīng)安裝的程序中尋找其 intent filter 和 myIntent 最匹配的一個 activity,啟動這個進程,并把這個 intent 通知給這個 activity。這就是一個程序的“生”。比如我們在 Home application 中選擇 “Web browser”,系統(tǒng)會根據(jù)這個 intent 找到并啟動 Web browser 程序,顯示 Web browser 的一個 activity 供我們?yōu)g覽網(wǎng)頁(這個啟動過程有點類似我們在在個人電腦上雙擊桌面上的一個圖標,啟動某個應(yīng)用程序)。在 Android 中,所有的應(yīng)用程序“生來就是平等的”,所以不光 Android 的核心程序甚至第三方程序也可以發(fā)出一個 intent 來啟動另外一個程序中的一個 activity。Android 的這種設(shè)計非常有利于“程序部件”的重用。
一個 Android 程序的進程是何時被系統(tǒng)結(jié)束的呢?通俗地說,一個即將被系統(tǒng)關(guān)閉的程序是系統(tǒng)在內(nèi)存不足(low memory)時,根據(jù)“重要性層次”選出來的“犧牲品”。一個進程的重要性是根據(jù)其中運行的部件和部件的狀態(tài)決定的。各種進程按照重要性從高到低排列如 下:
1. 前臺進程。這樣的進程擁有一個在屏幕上顯示并和用戶交互的 activity 或者它的一個 IntentReciver 正在運行。這樣的程序重要性***,只有在系統(tǒng)內(nèi)存非常低,萬不得已時才會被結(jié)束。
2. 可見進程。在屏幕上顯示,但是不在前臺的程序。比如一個前臺進程以對話框的形式顯示在該進程前面。這樣的進程也很重要,它們只有在系統(tǒng)沒有足夠內(nèi)存運行所有前臺進程時,才會被結(jié)束。
3. 服務(wù)進程。這樣的進程在后臺持續(xù)運行,比如后臺音樂播放、后臺數(shù)據(jù)上傳下載等。這樣的進程對用戶來說一般很有用,所以只有當系統(tǒng)沒有足夠內(nèi)存來維持所有的前臺和可見進程時,才會被結(jié)束。
4. 后臺進程。這樣的程序擁有一個用戶不可見的 activity。這樣的程序在系統(tǒng)內(nèi)存不足時,按照 LRU 的順序被結(jié)束。
5. 空進程。這樣的進程不包含任何活動的程序部件。系統(tǒng)可能隨時關(guān)閉這類進程。
從某種意義上講,垃圾收集機制把程序員從“內(nèi)存管理噩夢”中解放出來,而Android生命周期管理機制把用戶從“任務(wù)管理噩夢”中解放出來。我見過一些 Nokia S60 用戶和 Windows Mobile 用戶要么因為長期不關(guān)閉多余的應(yīng)用程序而導致系統(tǒng)變慢,要么因為不時查看應(yīng)用程序列表而影響使用體驗。Android 使用 Java 作為應(yīng)用程序 API,并且結(jié)合其獨特的生命周期管理機制同時為開發(fā)者和使用者提供***程度的便利。
名稱欄目:Android生命周期重要概念詳解
文章起源:http://fisionsoft.com.cn/article/cojgigh.html


咨詢
建站咨詢
