Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 常用的解決內存溢出(OOM)的方法

android 常用的解決內存溢出(OOM)的方法

編輯:關於Android編程

已經遇到了N次內存溢出的情況了,必須吸取教訓啊! 首先,bitmap常常是造成OOM的罪魁禍首!必須第一個解決: bitmap 的作用域能小就盡量小,用完就趕緊recycle掉!不過我經常都是在ondestroy裡面才recycle~ //回收圖片資源 if(bitmaps != null && bitmaps.length > 0){ int length = bitmaps.length; for(int i=0; i<length; i++){ if(bitmaps[i] != null && !bitmaps[i].isRecycled()){ bitmaps[i].recycle(); } } }  然後呢,就是如果用到ViewGroup的子類(比如ListView、GridView等)的話,就要移除它的ChildView,因為這玩意兒看著也很耗內存的樣子。。。 int listViewCount = dataList.size(); if(listView != null && (dataList != null && listViewCount>0)){ for(int i=0; i<listViewCount; i++){ dataList.removeAll(dataList); adapter.notifyDataSetChanged(); } } listView = null; dataList = null;  上面的兩段代碼我都是直接放onDestroy裡面執行的,效果還蠻好~ 至少不會崩~ ----------------------------------分割線------------------------------------ 當然,解決OOM的方法還有很多,比如WeakReference、壓縮bitmap圖像甚至直接修改Dalvik虛擬機分配內存的數量,- - ! 我就不一一說了,因為,,,我不會~ ╮(╯▽╰)╭ ~    WeakReference:     String abc=new String("abc");          WeakReference<String> abcWeakRef = new WeakReference<String>(abc);          abc=null;          System.out.println("before gc: "+abcWeakRef.get());          System.gc();          System.out.println("after gc: "+abcWeakRef.get());       壓縮bitmap: BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4;   opts.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeFile(filepath,opts);   ~~~Good Luck!
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved