當我儘量減少我的Android應用程序約4〜5次,我總是得到以下錯誤:安卓:內存不足錯誤
02-01 19:24:11.980: E/dalvikvm-heap(22362): Out of memory on a 3686416-byte allocation.
02-01 19:24:12.000: E/dalvikvm(22362): Out of memory: Heap Size=62755KB, Allocated=55237KB, Limit=65536KB
02-01 19:24:12.000: E/dalvikvm(22362): Extra info: Footprint=62435KB, Allowed Footprint=62755KB, Trimmed=2144KB
02-01 19:24:12.000: E/Bitmap_JNI(22362): Create Bitmap Failed.
02-01 19:24:12.000: E/Bitmap_JNI(22362): Failed to create SkBitmap!
02-01 19:24:12.000: E/AndroidRuntime(22362): FATAL EXCEPTION: main
02-01 19:24:12.000: E/AndroidRuntime(22362): java.lang.OutOfMemoryError: (Heap Size=62755KB, Allocated=55237KB)
02-01 19:24:12.000: E/AndroidRuntime(22362): at android.graphics.Bitmap.nativeCreateScaledBitmap(Native Method)
02-01 19:24:12.000: E/AndroidRuntime(22362): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:744)
02-01 19:24:12.000: E/AndroidRuntime(22362): at de.vauge.mb.Utils.getResizedBitmap(Utils.java:56)
02-01 19:24:12.000: E/AndroidRuntime(22362): at de.vauge.mb.MenuView.initialize(MenuView.java:74)
02-01 19:24:12.000: E/AndroidRuntime(22362): at de.vauge.mb.MenuView$1.handleMessage(MenuView.java:137)
02-01 19:24:12.000: E/AndroidRuntime(22362): at android.os.Handler.dispatchMessage(Handler.java:99)
02-01 19:24:12.000: E/AndroidRuntime(22362): at android.os.Looper.loop(Looper.java:156)
02-01 19:24:12.000: E/AndroidRuntime(22362): at android.app.ActivityThread.main(ActivityThread.java:5045)
02-01 19:24:12.000: E/AndroidRuntime(22362): at java.lang.reflect.Method.invokeNative(Native Method)
02-01 19:24:12.000: E/AndroidRuntime(22362): at java.lang.reflect.Method.invoke(Method.java:511)
02-01 19:24:12.000: E/AndroidRuntime(22362): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-01 19:24:12.000: E/AndroidRuntime(22362): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-01 19:24:12.000: E/AndroidRuntime(22362): at dalvik.system.NativeStart.main(Native Method)
我的應用程序由具有7種不同的,自我只有一個活動(它們都包含一些位圖),當它們不需要的時候它們會被切換到不可見的狀態(可能不是很好的風格,但它直到現在對我都有效......)。這些視圖中的每一個都有一個destroy()函數,用於循環使用它的所有位圖,MainActivity的onDestroy()調用所有這些destroy()函數。此外,我沒有使用任何靜態位圖。
那麼,除了回收所有Bitmap並且不使用靜態位圖之外,還有什麼可以嘗試的嗎?
MHH ..他們在onCreate()中加載。我剛剛意識到,最小化它們並不是問題。只有當我鎖定我的屏幕,應用程序似乎被銷燬或至少onDestroy()被稱爲,當我鎖定和解鎖我的手機幾次,錯誤發生......任何想法? – vauge
你確定'onDestroy()'在你鎖定手機時被調用嗎? 無論哪種方式,如果你只是在'onCreate()'中創建它們,應該沒有關係。我唯一能想到的其他事情就是製作一個日誌打印,在每個位圖上調用'isRecycled()'以確保它們實際上被回收。 – Tim