2015-01-21 3 views
1

В моем приложении у меня есть более 20 изображений, которые являются макетами фона. Когда я добавил другое изображение, приложение перестало работать.Android OutOfMemoryError

01-20 22:01:51.707: E/AndroidRuntime(15045): FATAL EXCEPTION: main 
01-20 22:01:51.707: E/AndroidRuntime(15045): Process: xxxxxx, PID: 15045 
01-20 22:01:51.707: E/AndroidRuntime(15045): java.lang.OutOfMemoryError 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:677) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:872) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.content.res.Resources.loadDrawable(Resources.java:3056) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.content.res.Resources.getDrawable(Resources.java:1613) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1016) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.policy.impl.PhoneWindow.setDefaultIcon(PhoneWindow.java:1543) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Activity.initActionBar(Activity.java:1996) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Activity.setContentView(Activity.java:2011) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at xxxxxx.onCreate(xxxxx.java:1338) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Activity.performCreate(Activity.java:5426) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.access$900(ActivityThread.java:161) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.os.Handler.dispatchMessage(Handler.java:102) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.os.Looper.loop(Looper.java:157) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.main(ActivityThread.java:5356) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at java.lang.reflect.Method.invokeNative(Native Method) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at java.lang.reflect.Method.invoke(Method.java:515) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at dalvik.system.NativeStart.main(Native Method) 

Изображения загружаются в данный момент по методу onCreate().

main.xml:

<LinearLayout 
    android:id="@+id/linearLayout27" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/abc" 
    android:orientation="vertical" > 

OnCreate():

layout26 = (LinearLayout) findViewById(R.id.linearLayout27); 
layout26.setOnClickListener(this); 

Я хотел бы добавить, что каждое изображение имеет размер примерно 400 х 800 пикселей.

Я знаю, что эта проблема уже появилась здесь, но я не мог найти решение для своего дела.

+0

Опубликовать свой лог-код, показывающий 'OutOfMemoryError' – shkschneider

+0

** Манифест ** ...' LinearLayout' ?! Ты уверен? –

+1

set largeHeap = "true" – ashutiwari4

ответ

2

Это очень распространенная проблема при работе с растровым бидом Android. Я genrally добавить

android:largeHeap=“true” 

в файле манифеста, но в последнее время я использую Пикассо банку, который очень хорошо при обработке изображений. Он также обеспечивает кеширование по умолчанию. Вот ссылка, чтобы вы начали http://square.github.io/picasso/

+0

Могу ли я загружать изображение с использованием Picasso в качестве фона для макета – pawel22

+0

Я не получил то, что вы пытаетесь спросить, спрашиваете, можете ли вы загружать изображения в виде задачи async в фоновом режиме внутри макета или что-то еще? –

+0

В документации библиотеки Picasso я нашел это: Picasso.with (context) .load (R.drawable.landing_screen) .into (imageView1); Но мне нужно загрузить изображение в качестве фона макета. И кажется, что в этой библиотеке я могу использовать только imageView – pawel22