java.lang.OutOfMemoryError
Добавлено: 16 апр 2014, 00:13
Здравствуйте!
Пробовал после каждого alb.add(0, BitmapFactory.decodeResource(getResources(),R.drawable.rotonda_01)); делать alb.get(index).recycle();- не помогло. Вариант от гугла кромсать изображения показался мне не подходящим, так как когда попадётся дисплей больших размеров это может не сработать и снова вылетит эта ошибка.
Форумчани подскажите пожалуйста как побороть утечку памяти универсальным способом ну или просто как это сделать.
Код: Выделить всё
ArrayList<Bitmap> alb= new ArrayList<Bitmap>();
alb.add(0, BitmapFactory.decodeResource(getResources(),R.drawable.rotonda_01));
alb.add(1, BitmapFactory.decodeResource(getResources(),R.drawable.map_02));//вот тут вылетает
alb.add(2, BitmapFactory.decodeResource(getResources(),R.drawable.tile_03));
alb.add(3, BitmapFactory.decodeResource(getResources(),R.drawable.structure_04));
alb.add(4, BitmapFactory.decodeResource(getResources(),R.drawable.yaht_05));
alb.add(5, BitmapFactory.decodeResource(getResources(),R.drawable.stairs_06));
alb.add(6, BitmapFactory.decodeResource(getResources(),R.drawable.arhitechture_07));
alb.add(7, BitmapFactory.decodeResource(getResources(),R.drawable.interior_08));
alb.add(8, BitmapFactory.decodeResource(getResources(),R.drawable.guestroom_09));
alb.add(9, BitmapFactory.decodeResource(getResources(),R.drawable.reception_11));
alb.add(10,BitmapFactory.decodeResource(getResources(),R.drawable.elevator_10));
alb.add(11,BitmapFactory.decodeResource(getResources(),R.drawable.arches_12));- 04-16 00:26:53.666: E/AndroidRuntime(1759): FATAL EXCEPTION: main
04-16 00:26:53.666: E/AndroidRuntime(1759): java.lang.OutOfMemoryError
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:378)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:408)
04-16 00:26:53.666: E/AndroidRuntime(1759): at ru.donstroy.parusamobile.aboutcomplex.AboutComplexActivity.initData(AboutComplexActivity.java:93)
04-16 00:26:53.666: E/AndroidRuntime(1759): at ru.donstroy.parusamobile.aboutcomplex.AboutComplexActivity.onCreate(AboutComplexActivity.java:29)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.app.Activity.performCreate(Activity.java:5104)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.app.ActivityThread.access$600(ActivityThread.java:153)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.os.Looper.loop(Looper.java:137)
04-16 00:26:53.666: E/AndroidRuntime(1759): at android.app.ActivityThread.main(ActivityThread.java:5227)
04-16 00:26:53.666: E/AndroidRuntime(1759): at java.lang.reflect.Method.invokeNative(Native Method)
04-16 00:26:53.666: E/AndroidRuntime(1759): at java.lang.reflect.Method.invoke(Method.java:511)
04-16 00:26:53.666: E/AndroidRuntime(1759): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
04-16 00:26:53.666: E/AndroidRuntime(1759): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
04-16 00:26:53.666: E/AndroidRuntime(1759): at dalvik.system.NativeStart.main(Native Method)
Пробовал после каждого alb.add(0, BitmapFactory.decodeResource(getResources(),R.drawable.rotonda_01)); делать alb.get(index).recycle();- не помогло. Вариант от гугла кромсать изображения показался мне не подходящим, так как когда попадётся дисплей больших размеров это может не сработать и снова вылетит эта ошибка.
Форумчани подскажите пожалуйста как побороть утечку памяти универсальным способом ну или просто как это сделать.