即興的靈感

          思維是一種藝術; 藝術需要靈感。

          博客好友

          最新評論

          Android程序的生命周期


          在Android中,多數情況下每個程序都是在各自獨立的Linux進程中運行的。當一個程序或其某些部分被請求時,它的進程就“出生”了;當這個程序沒有必要再運行下去且系統需要回收這個進程的內存用于其他程序時,這個進程就“死亡”了。可以看出,Android程序的生命周期是由系統控制而非程序自身直接控制。這和我們編寫桌面應用程序時的思維有一些不同,一個桌面應用程序的進程也是在其他進程或用戶請求時被創 建,但是往往是在程序自身收到關閉請求后執行一個特定的動作(比如從main函數中 return)而導致進程結束的。要想做好某種類型的程序或者某種平臺下的程序的開發,最關鍵的就是要弄清楚這種類型的程序或整個平臺下的程序的一般工作模式并熟記在心。

              在Android系統中,當某個activity調用 startActivity(myIntent) 時,系統會在所有已經安裝的程序中尋找其 intent filter 和myIntent最匹配的一個activity,啟動這個進程,并把這個intent 通知給這個activity。這就是一個程序的“生”。比如我們在 Home application 中選擇 “Web browser”,系統會根據這個intent 找到并啟動 Web browser 程序,顯示 Web browser 的一個activity 供我們瀏覽網頁(這個啟動過程有點類似我們在在個人電腦上雙擊桌面上的一個圖標,啟動某個應用程序)。在 Android 中,所有的應用程序“生來就是平等的”,所以不光Android的核心程序甚至第三方程序也可以發出一個intent來啟動另外一個程序中的一個activity。Android的這種設計非常有利于“程序部件”的重用。

              一個Android 程序的進程是何時被系統結束的呢?
              通俗地說,一個即將被系統關閉的程序是系統在內存不足(low memory)時,根據“重要性層次”選出來的“犧牲品”。一個進程的重要性是根據其中運行的部件和部件的狀態決定的。各種進程按照重要性從高到低排列如下:
              1.前臺進程。這樣的進程擁有一個在屏幕上顯示并和用戶交互的activity或者它的一個IntentReciver正在運行。這樣的程序重要性最高,只有在系統內存非常低,萬不得已時才會被結束。

              2.可見進程。在屏幕上顯示,但是不在前臺的程序。比如一個前臺進程以對話框的形式顯示在該進程前面。這樣的進程也很重要,它們只有在系統沒有足夠內存運行所有前臺進程時,才會被結束。

              3.服務進程。這樣的進程在后臺持續運行,比如后臺音樂播放、后臺數據上傳下載等。這樣的進程對用戶來說一般很有用,所以只有當系統沒有足夠內存來維持所有的前臺和可見進程時,才會被結束。

              4.后臺進程。這樣的程序擁有一個用戶不可見的activity,這樣的程序在系統內存不足時,按照 LRU 的順序被結束。

              5.空進程。這樣的進程不包含任何活動的程序部件,系統可能隨時關閉這類進程。Android生命周期



          ?
          鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
          ???? 隱姓埋名/低調華麗/簡單生活/完美人生

          posted on 2010-03-14 14:15 poetguo 閱讀(1239) 評論(0)  編輯  收藏 所屬分類: Android

          主站蜘蛛池模板: 田林县| 大冶市| 平利县| 武城县| 湖州市| 方正县| 县级市| 泌阳县| 高碑店市| 永顺县| 阿荣旗| 方正县| 凤冈县| 肇东市| 虞城县| 绥德县| 临漳县| 延津县| 德昌县| 咸阳市| 乌恰县| 海兴县| 九龙城区| 顺平县| 乐山市| 牟定县| 三亚市| 邯郸县| 中西区| 郓城县| 姜堰市| 沿河| 上思县| 兴山县| 嘉义市| 杨浦区| 砚山县| 巢湖市| 韶关市| 格尔木市| 遂川县|