android的一個特性:android應用的生命週期不受應用自己控制,而是由系統自己來決定。當系統內存不足時,爲了確保當前應用的運行,系統會幹掉某些進程,釋放內存。那麼問題來了:系統會不會幹掉個人應用進程呢?它依據什麼來幹掉進程呢?手機中裝了這麼多應用,它會率先幹掉哪些進程呢?
這就須要瞭解下"android應用的重要性",應用的重要性(按優先級別)分爲:
1 前端進程:有兩種,一種簡單的理解就是當前正在與用戶交互的Activity所在的進程;另一種就是存在廣播接收器onReceiveon方法正在運行的進程。(只有當內存低到不夠這些進程可用的時候,纔會被幹掉,這種狀況發生的機率最小)
2可視進程:擁有一個能夠看見的,可是卻沒有在最前端顯示的Activity。最多見的就是:在一個Activity中彈出了一個Dialog.(只有前端進程所需內存不足時,纔會被幹掉,發生機率大於前端進程)
3服務進程:啓動Service的進程。(只有當前端進程和可視進程所需內存不足時,纔會被幹掉,發生機率大於可視進程)
4後臺進程:簡單的理解全部的Activity對用戶不可見了。(當前三類所需內存不足時,後臺進程就會被幹掉,發生機率大於服務進程)
5空進程:有任何活動的應用組件的進程。重要性最低,率先將會被幹掉。
那麼,我開發的應用到底屬於哪一類進程呢?舉個簡單的例子:
1若是你的應用當前正在與用戶交互,那麼就屬於前端進程;2若是按了HOME鍵,假如應用中有啓動的服務,那就屬於服務進程,沒有的話那就是後臺進程。前端
應用不會被系統幹掉,這是不可能的。所以,在開發應用的時,對組件的恰當使用可間接的提升應用自己的重要性,從而下降應用被率先幹掉的機率,我的以爲這是咱們設計開發應用時,須要注意的一點。android