2014-06-29 56 views
0

我知道這個問題被問了好幾次,但仍然清楚我的情況會有所幫助。管理內存在android中顯示大的位圖

我在2列網格視圖中顯示一些圖像。當用戶點擊圖片時,我在ViewPager中顯示圖片。在gridview中顯示的圖像大約是200X200像素,我想在DialogFragment中的ViewPager中以放大的大小顯示相同的圖像,大約800X800像素。

圖片的實際大小是巨大的,不同的分辨率。我已經按照鏈接http://developer.android.com/training/displaying-bitmaps/index.html和我已縮小圖像的大小,這是我的應用程序所需的大小。在ViewPager片段對話框中,我也在使用bitmap.recycle()回收圖像,並在PagerFragment onDestroy中顯式調用System.gc()(我知道這是一種不好的做法)。但即使如此,我也會失去內存錯誤。最重要的是,我僅在Android 4.2.1(Nexus 7)中遇到此問題,但在Android 4.1.2(Samsung Tab)和Android 4.4(Nexus 7)中沒有遇到此問題。

對於以後的2個android版本,我不必打電話給System.gc()。沒有這個,它工作得很好。我檢查了一些300 - 400圖像的Viewpager。但是,在滾動60張圖片之後,應用程序崩潰時發生OutOfmemory錯誤。爲了解決這個問題,我已經使用了一種解決方法,現在我認爲這對我的應用程序非常不利,並且無法消化它。

我真的很感謝能幫助我避免android:largeHeap="true"的人。

在我的應用程序中,我必須在GridView中顯示6000個圖像,並且還會在鏈接到GridView的ViewPager中顯示放大圖像。在滾動gridview的同時,我僅從FileSystem異步加載20個圖像。

在此先感謝...

回答

0

使用LRUCache來保存圖像。使那是唯一擁有當前不在屏幕上的位圖的東西。這樣,舊的位圖將會被踢出去並迅速收集垃圾。