1

我在我的應用程序中使用android:largeHeap來獲取更多內存,因爲我在scrollview中有一個大圖像,否則我的應用程序會崩潰,出現內存異常。Monodroid/Android在舊設備上使用android:largeHeap

我有2個設備,其中一個使用Android 4.2 jellybean,另一個使用Android 2.3薑餅。 4.2上的android:largeHeap工作正常,但2.3上我無法使用它。

有沒有辦法讓兩個設備都滿意?感謝幫助。

回答

0

honeyHeater(3.0)中添加了largeHeap參數,因此它不適用於較低的設備。

但是,使用largeHeap參數不是解決方案。它必須作爲絕對的最後手段使用。它會迫使Android終止任何後臺進程或應用程序,以獲得額外的堆,這是一個很大的禁忌!

你說你在ScrollView中有一個大的圖像。你有沒有嘗試過使用BitmapFactory首先適當地縮放圖像?

編輯:另外,你提到你將圖像分成三份。不要這樣做,因爲每個位圖都會佔用額外的內存。相反,將其保存爲一個Bitmap,但在整個Bitmap上執行縮放。

+0

我知道。我所嘗試的是我分成3部分的圖像(超過4096像素的寬度)。我還使用BitmapFactory來設置insamplesize,但應用程序仍然崩潰。在一個案例中,它的工作,但我在scrollview中的滾動是在slowmo。 :/ – anguish

+0

您還設置了inSampleSize了多少?對於4096px的圖像,甚至將其設置爲8不會做出任何明顯的不同質量,除非你是在高分辨率運行和大(> 7" )屏幕.. –

+0

如果我使用8,我看不懂我的號碼,因爲它的位圖上有小數字,所以使用3是我可以使用的最大數量 – anguish

0

我想這與getLargeMemoryClasss()一起使用?這隻適用於API 11 // Android 3 // Honeycomb。

作爲一個側面說明,我不確定你應該需要它,難道你只是縮放圖像?

0

Here是關於如何有效地使用Bitmap的stackoverflow的詳細討論,以便不會發生outofmemory錯誤,並且您不必增加應用程序的heapsize。

+0

有鏈接到你自己的答案是避開在Android的問題可怕的方式。我已編輯它以指出對該問題的接受答案。 –

+0

看起來像我的編輯太小,無法通過...無論如何,接受的問題鏈接是http://stackoverflow.com/a/13363988/1133908 –

+0

我的意思是帶你到該頁面,這就是全部。我一直在關注這個問題,我知道我的答案不在那裏。爲什麼我會把你帶到那裏呢?另外我編輯了鏈接。 –

相關問題