android開發實現記憶體優化功能

yangxi_001發表於2013-11-15

首先你要理解android的程式分級,每種級別代表不同的工作方式,和記憶體使用情況

  

  1. 前臺程式(Foreground),比如ireader,ireader的程式就是前臺程式,這些程式是不會被系統優先結束的.當我把它切到後臺的時候,它就變成後臺程式了.
  2. 還有可見程式(Visible),比如輸入法程式,你平時是看不見它的,但是在你開啟輸入介面的時候,它會很快的彈出來。
  3. 主要服務,如電話,簡訊,這些主要服務平時也不會被系統自動結束,除非你非要關它,關了也會自己重新載入的.這也是你完全釋放記憶體以後過一會就看著記憶體可用值又慢慢降低的原因
  4. 次要服務,諸如谷歌 企業套件,Gmail,聯絡人,它們和一些系統功能相關,比如Gmail的郵件推送,我們時常需要用到它們,所以系統也不會去終止它們,終止了也會自動載入。
  5. 後臺程式,這種後臺程式在記憶體極度不夠的時候,會被系統選擇性的幹掉的.
  6. 內容供應節點,沒有程式實體,僅提供內容供別的程式去用的,比如日曆供應節點,郵件供應節點等.在系統自動終止程式時,這類程式享有優先的被幹掉權.
  7. 空程式,沒有任何東西在內執行的程式,有些程式在退出後,依然會在程式中駐留一個空程式,這個程式裡沒有任何資料在執行,作用往往是提高該程式下次的啟動速度或者記錄程式的一些歷史資訊.這部分程式無疑是系統最先終止的.

那一般記憶體管理如何實現呢?

結束除主要服務、次要服務,之外的所有程式,達到記憶體釋放的效果

  1. 1killProcess(int pid)
  2. android.os.Process.killProcess(android.os.Process.myPid());
  3. 2System.exit(int code)
  4. System.exit(0);
  5. 3void killBackgroundProcesses(String packageName)

通過對linux的系統設定進行程式管理,分別為六類程式設定不同的閾值來操縱系統的記憶體分配機制,以達到永遠有效。

相關文章