2013-06-29 7 views
0

Я создал приложение, состоящее только из ImageViews.Использование Изображения высокого разрешения дает BITMAP ошибку?

Также в соответствии с требованием к приложению мне пришлось использовать высококачественные изображения с разрешением 1024 * 780 с разрешением 200 * 250 изображений. Все изображения суммируются до почти 45 изображений !!!.

В High-End (кучи память> = 32) Устройств, я нашел, что это работает нормально, приходя к низкому концу (динамическая память < 32) устройство & также от Micromax A 65, я получил некоторые сбои Reports & I попробовал эмулятор памяти кучи памяти 16 МБ.

После нажатия первого изображения, которое показывает:

06-29 05:16:28.572: W/dalvikvm(846): threadid=1: thread exiting with uncaught exception  (group=0x40a70930) 
06-29 05:16:28.665: E/AndroidRuntime(846): FATAL EXCEPTION: main 
06-29 05:16:28.665: E/AndroidRuntime(846): java.lang.OutOfMemoryError 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.content.res.Resources.loadDrawable(Resources.java:1965) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.content.res.Resources.getDrawable(Resources.java:660) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.widget.ImageView.resolveUri(ImageView.java:616) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.widget.ImageView.setImageResource(ImageView.java:349) 
06-29 05:16:28.665: E/AndroidRuntime(846): at com.mshah.learnandplaybasiccolors.Learn.setImageWithSound(Learn.java:123) 
06-29 05:16:28.665: E/AndroidRuntime(846): at com.mshah.learnandplaybasiccolors.Learn.onClick(Learn.java:88) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.view.View.performClick(View.java:4202) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.view.View$PerformClick.run(View.java:17340) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.os.Handler.handleCallback(Handler.java:725) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.os.Looper.loop(Looper.java:137) 
06-29 05:16:28.665: E/AndroidRuntime(846): at android.app.ActivityThread.main(ActivityThread.java:5039) 
06-29 05:16:28.665: E/AndroidRuntime(846): at java.lang.reflect.Method.invokeNative(Native Method) 
06-29 05:16:28.665: E/AndroidRuntime(846): at java.lang.reflect.Method.invoke(Method.java:511) 
06-29 05:16:28.665: E/AndroidRuntime(846): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
06-29 05:16:28.665: E/AndroidRuntime(846): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
06-29 05:16:28.665: E/AndroidRuntime(846): at dalvik.system.NativeStart.main(Native Method) 

Я не использую Bitmap, он дает ошибку растровой: Как я могу решить эту ошибку ???

или

Должен ли я исключить поддержку таких устройств?

ответ

2

Вы не должны загружать все эти изображения в память одновременно. Почему ты? Вы должны создать некоторую галерею эскизов или что-то в этом роде и ленивую нагрузку по мере необходимости. Об этом нет. У вас будет нехватка памяти, загружая изображения так, как вы делаете, даже на устройствах верхнего уровня, так как андроид дает вам очень небольшой объем памяти, в котором можно работать.

+0

Спасибо за ответ., Ваша точка зрения правильная, но я постоянно использую iMages на кнопке кнопки. Я показываю их в полноэкранном режиме (здесь идут изображения с более высоким разрешением). Поэтому я поддерживал некоторое время для «gc», чтобы переработать память. Для памяти с низкой кучей он отображает ошибку «Недостаточно памяти» и закрывает приложение. – sai

Смежные вопросы