看板 AndroidDev 關於我們 聯絡資訊
大家好 最近用了viewPager + FrameLayout 可以玩玩相簿, 但不斷的出現OOM已經快瘋掉了, 已經使用AsyncTask處理了大圖片溢出的問題, (BitmapFactory.Options options; options.inSampleSize = 2; ......) 主要會有問題的地方,是當imageview.setImageBitmap(Bmp)後 ,會暫存住bitmap,在PagerAdapter有提供 destroyItem(View container, int position, Object object) 讓我recycle掉存在imageview裡的bitmap imageview.setImageDrawable(null); if(oldBitmap !=null && !oldBitmap.isRecycled()) { oldBitmap.recycle(); oldBitmap = null; } 我以為這樣已經可以將bitmap給清除乾淨,但是當換了多張圖片後 ,還是出現了oom的問題(Caused by: java.lang.OutOfMemoryError: (Heap Size=98304KB, Allocated=91403KB),想請問各位,該如何解決呢? (ps. 突然想到會不會有可能是,ViewPager 每滑動一次,所以新增一個view 所以除了刪除舊有的bitmap 舊有的view 也須手動刪除?) 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.138.152.10 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1402380627.A.711.html ※ 編輯: fake01 (140.138.152.10), 06/10/2014 14:18:29
fake01:加入((ViewPager) container).removeView(itemView); 06/10 14:24
fake01:在destroyItem 中 還是oom 06/10 14:25
visor:android:largeHeap="true" 試試看 06/10 16:50
fake01:V大 是可行,不過超過一定張數還是會OOM 06/10 17:20
fake01:剛試了一下 註解掉XX.setImageBitmap(bmp) 就不會oom 06/10 17:23
fake01:imageview 好像會卡住暫存阿... 06/10 17:24
lin1987www:你可以試試用 Android-Universal-Image-Loader 06/10 18:31
lin1987www:http://ppt.cc/gwB1 06/10 18:32
sdyy:其實這是viewpager的問題 他會把每一頁的圖都鎖住無法釋放 06/10 21:52
sdyy:所以你可以再背景用一個圖片管理,在非瀏覽頁面時釋放Butmap 06/10 21:54
sdyy:沒看到你的p.s. 其實就是你所想的那樣 view會把Butmap鎖住 06/10 21:55
sdyy:我的bitmap怎麼都打成butmap.... 06/10 21:55
sdyy:所以在瀏覽頁面+-1~2以外的view最好都要及時setBitmap = null 06/10 21:58
sdyy:應該是imageview.setImageDrawable(null); 重點是即時而非 06/10 21:58
sdyy:在destoryitem才呼叫 06/10 21:59