人人都應該了解的 Android 程序管理機制

2021-09-07 15:53:42 字數 1611 閱讀 7190

作為一名資深的手機使用者(我相信人人都是),是時候該解決這類疑問了。這一切都要從人與宇宙的關係。。。咳咳。。手機程序的概念開始說起。

在開發文件中是這麼說的:當乙個應用程式啟動時(僅僅只是「啟動時」,並不一定有元件執行),就會產生乙個程序。在這個程序中同時會建立乙個主線程,使應用內的任務開始執行。android系統總是盡可能地保留程序。舉個例子,當你開啟qq時,程序建立(同時建立主線程),隨後各種內容載入(首先是活動,然後是各種控制項什麼的)。當你完成操作時,一般都會按後退鍵(back),直至退出程式。

所以很多時候我們看上去關閉了程式,但其實它仍在後台執行!(此處請自行回憶那些困擾你的流氓軟體們)。不過不必擔心,android 系統自有一套程序管理機制來幫你管理後台任務。系統會根據應用的重要程度把所有程序劃歸為幾個等級,最不重要的程序將會被優先關閉,相對重要的程序將獲得資源來保留。

那麼問題來了----到底如何分辨哪些程序重要而哪些不重要呢?

系統當然要保證使用者體驗,所以重要等級的劃分原則就是要首先滿足使用者當前的需求:使用者正在使用的當然不能關閉,而使用者暫時不需要的,相對的就沒那麼重要了。

1.foreground process 前台程序:也就是使用者正在進行操作的程序。這樣的程序優先順序(優先保留)最高,最不容易銷毀,因為它表現在螢幕上,直接同使用者進行互動,所以只有當記憶體資源極度緊張等一些其他極端情況才會關閉,表現為「閃退」。我用的第一台 android 手機執行記憶體(ram)只有 290m,多工時經常記憶體不足導致程式「閃退」。這手機我竟然用了兩年,現在想想都佩服我自己hhhh。

不只是介面互動,如果應用程式中的服務(service)元件正在進行一些操作或者廣播接收者(broadcastreceiver)在執行接收廣播的操作(onreceive)時,該程序仍被視為前台程序。

2.visible process 可視程序:顧名思義,就是仍然在螢幕上有顯示,但使用者不再能直接與它互動的程式。比如當在應用中開啟下滑選單時(有些下滑選單是透明的),使用者能「看得到」,但是「摸不著」。優先順序僅次於前台程序。

4.background process 後台程序:當你按下 home 鍵或 back 鍵時,手機退回主介面,此時應用程式不再可見,轉入後台執行。如果如果不滿足前幾類的條件,這個程序就會被判定為後台程序。

也許你已經注意到了,在螢幕上正在顯示的或者正在服務於使用者的程序的重要等級是比較高的,這是出於對使用者體驗的考慮-----誰會接受在自己打王者榮耀的時候遊戲突然閃退呢?大多數情況下,乙個應用程式的元件成分都會比較複雜,這個程序可能同時滿足多個級別的劃分條件。在這種情況下,它會被盡可能地劃為能夠達到的最重要等級。

不過,你以為這就完了?

儘管 android 想要盡可能的儲存所有的程序,但是並非所有的記憶體都會被用於維持程序。比如系統執行會占用相當的記憶體,系統也需要留出一部分閒置記憶體用以處理新事件。android 的管理讓記憶體的分配處於一種「動態平衡」中,以保障各項任務都能盡可能的穩定、高效地執行。

好了,關於程序的管理就暫時說到這了。眾所周知,android 系統是乙個複雜的機體,它管理著手機硬體和軟體,讓它們盡可能的配合,提供給使用者最好的服務。這次只是簡單介紹了程序管理機制,今後我也會盡量用通俗的語言從系統上去解釋那些平常看上去似是而非的問題,期待你的關注!

前端人人都應該理解的盒模型BFC渲染機制

因為如果你乙個前端壓根沒聽說過bfc,那你是如何理解下面這幾個css現象的呢?現象一 垂直方向上元素margin的合併現象首先,有父子巢狀關係的2個元素,和示例如下 html部分 然後,我們給子元素新增乙個margin top 50px時 son我們神奇的發現父子元素同時 掉下來了50px 如圖所示...

人人都應該掌握的9種資料分析思維

說到資料分析,啤酒和尿布的例子大家應該都聽膩了。再具體 深入一些的內容,往往因為數學就令很多人望而卻步了。給大家分享9個不帶數學推導的資料分析思路,希望大家能喜歡 1.分類 分類分析的目標是 給一批人 或者物 分成幾個類別,或者 他們屬於每個類別的概率大小。舉個栗子 京東的使用者中,有哪些會在618...

每天都應該抽出時間思考

最近幾個星期每週在實驗室呆的時間大概都是70 80小時,做了很多的事情,看了很多的材料。gene expression programming c code standard 了解cuda 看模式識別 幫師兄寫試驗程式 寫資料預處理程式 改 做實驗,還有一堆瑣事,總之事情一大堆,每天忙得不可開交。但...