Android application使用總結

簡介:緩存

  Application和Activity、Service同樣,都是Android框架的一個系統組件,每個應用都有一個Application,Application的生命週期也就是整個app的生命週期。app

特色:框架

  • 實例的建立方式:單例模式

  每個app運行是會首先會建立Application類並實例化application對象,有且只有一個(單例模式),也能夠繼承application自定義Application類,需在manifeast中註冊。對象

  • 實例類型:全局類型

  不一樣組件得到的application實例是同一個實例。繼承

  • 生命週期

  application的生命週期等於這個應用的生命週期。生命週期

 

Application的使用:進程

  • onCreate()

  Application建立時調用,用於初始化一些資源、第三方框架的初始化等,這個方法裏面切記不要執行耗時的操做,否則影響第一個activity、service的啓動速度內存

  • onLowMemory()

  onLowMemory()是Android系統內存不足時,當全部的後臺程序都被kill了以後仍是沒有足夠的內存來運行當前的應用,這個時候系統就會通知你輪到你清理一下釋放一些資源保障app可以運行。資源

  • onTrimMemory()

  onTrimMemory(int level)的傳參是一個int型,這個數值越大表明着內存不足的嚴重性越高。有一個頗有意思的比方:it

  從前有個偉大的媽媽叫Android系統,她有一羣子女叫APP,她含辛茹苦地養着這羣熊孩子。當系統老媽發現她的工資(內存)不夠下個月的開銷的時候,就會回調這個方法,告訴她的APP子女,我如今工資不夠了,大家趕忙少吃少用點,否則我就要根據大家的重要  性高低來一個一個地「清理門戶」了。
  這裏有傳入一個int類型的參數level,它告訴APP們內存不足的嚴重性(越高越嚴重)。假如這時候系統內存不足,運行着前臺和後臺一共幾個APP,這些不一樣的APP會收到系統老媽不一樣的「勸告信息」:

  1. TRIM_MEMORY_RUNNING_MODERATE:數值爲5,這個APP是系統老媽的「掌上明珠」(前臺APP),老媽讓APP注意一下:不要大手大腳(釋放不用的內存),個人工資(內存)不夠養你了,不過就算再不夠,只是把你其餘不爭氣兄弟姐妹(殺掉後臺APP)清出家門,你注意一下吧。
  2. TRIM_MEMORY_RUNNING_LOW:數值10,這個APP是系統老媽的「掌上明珠」(前臺APP),老媽語重心長地對APP說:孩子,個人工資(內存)實在不夠了,你能不能拿點壓歲錢出來幫補一下(釋放不用的內存),不行的話就要把你的不少兄弟姐妹(殺掉後臺APP)送走了。
  3. TRIM_MEMORY_RUNNING_CRITICAL:數值15,這個APP是系統老媽的「掌上明珠」(前臺APP),老媽嚴重警告APP:臭小子,你的兄弟姐妹(殺掉後臺APP)都快走光了,你還不給我多省點錢(要求釋放內存),你還真的想把你的兄弟全趕走啊,當時候就剩你一個,說不定你都自身難保啦(執行onLowMemory()方法)。
  4. TRIM_MEMORY_UI_HIDDEN:數值20,老媽告訴這個APP:你個熊孩子,闖了禍(用戶把APP從前臺切換到後臺),我要收回你的零用錢(UI資源)。
  5. TRIM_MEMORY_BACKGROUND :數值40,這些APP是老媽收養的(後臺APP),老媽在吃完晚飯後留下了他,對他說:孩子啊,如今家裏經濟很差(內存不足),你就少花點吧,這個月的零用錢不發了吧(要求釋放資源),否則的話咱們家可能養不下你和你後面的那幫兄弟姐妹了(殺掉後臺APP)。
  6. TRIM_MEMORY_MODERATE :數值60,這些APP是老媽收養的(後臺APP),老媽偷偷地跟APP說:孩子啊,大家花費太多了,老媽的工資養不下大家了(內存不足),大家用少點吧(要求釋放內存),否則等我把你後面那幾個兄弟趕出去以後就輪到你了(已進入LRU緩存列表的中間位置,若是後面的APP進程資源都被回收的話,下一個就是輪到它了)。
  7. TRIM_MEMORY_COMPLETE :數值80,這些APP是老媽充話費送的(後臺APP),老媽狠狠地對他說:臭小子,沒看到都快揭不開鍋了(內存不足)嗎?趕忙把你的私房錢拿出來(要求釋放資源),否則大家就準備滾出這個家門吧(已處於LRU緩存列表的後面位置,APP隨時都有被回收的風險)。

 

onTrimMemory()和onLowmemory()的區別:

  1. onLowMemory被回調時此時已經沒有後臺進程了,而onTrimMemory被回調時此刻還存在後臺進程。
  2. onLowMemory是在最後一個後臺進程被殺時調用,通常狀況是low memory killer 殺進程後觸發;而OnTrimMemory的觸發更頻繁,每次計算進程優先級時,只要知足條件,都會觸發。
相關文章
相關標籤/搜索