Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android OnLowMemory和OnTrimMemory

Android OnLowMemory和OnTrimMemory

編輯:關於Android編程

 

 

 

1. OnLowMemory

OnLowMemory是Android提供的API,在系統內存不足,所有後台程序(優先級為background的進程,不是指後台運行的進程)都被殺死時,系統會調用OnLowMemory。系統提供的回調有:Application/Activity/Fragementice/Service/ContentProvider

除了上述系統提供的API,還可以自己實現ComponentCallbacks,通過API注冊,這樣也能得到OnLowMemory回調。例如:

public static class MyCallback implements ComponentCallbacks {

@Override

public void onConfigurationChanged(Configuration arg) {

}

 

@Override

public void onLowMemory() {

//do release operation

}

}

然後,通過Context.registerComponentCallbacks ()在合適的時候注冊回調就可以了。通過這種自定義的方法,可以在很多地方注冊回調,而不需要局限於系統提供的組件。

2. OnTrimMemory

OnTrimMemory是Android 4.0之後提供的API,系統會根據不同的內存狀態來回調。系統提供的回調有:Application/Activity/Fragement/Service/ContentProvider

OnTrimMemory的參數是一個int數值,代表不同的內存狀態:

  • TRIM_MEMORY_COMPLETE:內存不足,並且該進程在後台進程列表最後一個,馬上就要被清理

  • TRIM_MEMORY_MODERATE:內存不足,並且該進程在後台進程列表的中部。

  • TRIM_MEMORY_BACKGROUND:內存不足,並且該進程是後台進程。

  • TRIM_MEMORY_UI_HIDDEN:內存不足,並且該進程的UI已經不可見了。

    以上4個是4.0增加

    •  

    • TRIM_MEMORY_RUNNING_CRITICAL:內存不足(後台進程不足3個),並且該進程優先級比較高,需要清理內存

    • TRIM_MEMORY_RUNNING_LOW:內存不足(後台進程不足5個),並且該進程優先級比較高,需要清理內存

    • TRIM_MEMORY_RUNNING_MODERATE:內存不足(後台進程超過5個),並且該進程優先級比較高,需要清理內存

    • 以上3個是4.1增加

      系統也提供了一個ComponentCallbacks2,通過Context.registerComponentCallbacks()注冊後,就會被系統回調到。

      OnLowMemory和OnTrimMemory的比較

      1,OnLowMemory被回調時,已經沒有後台進程;而onTrimMemory被回調時,還有後台進程。
      2,OnLowMemory是在最後一個後台進程被殺時調用,一般情況是low memory killer 殺進程後觸發;而OnTrimMemory的觸發更頻繁,每次計算進程優先級時,只要滿足條件,都會觸發。
      3,通過一鍵清理後,OnLowMemory不會被觸發,而OnTrimMemory會被觸發一次。


       

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved