2015-02-04 4 views
0

У меня есть следующие ImageView:OutOfMemoryError при загрузке анимации .xml

imageView.setBackgroundResource(R.drawable.create_user); 

Мои create_user Drawable выглядит следующим образом:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">  
    <item android:drawable="@drawable/create_user_0" android:duration="500" /> 
    <item android:drawable="@drawable/create_user_1" android:duration="500" /> 
</animation-list> 

Но когда .xml создается в imageView.setBacgroundResource(R.drawable.create_user), он запускает следующее исключение:

02-04 10:49:07.994: E/AndroidRuntime(1379): FATAL EXCEPTION: main 
02-04 10:49:07.994: E/AndroidRuntime(1379): java.lang.OutOfMemoryError 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.content.res.Resources.loadDrawable(Resources.java:2988) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.content.res.Resources.getDrawable(Resources.java:1558) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.graphics.drawable.Drawable.createFromXml(Drawable.java:873) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.content.res.Resources.loadDrawable(Resources.java:2970) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.content.res.Resources.getDrawable(Resources.java:1558) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.view.View.setBackgroundResource(View.java:15697) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at com.facephi.sdk.ui.FragmentCreatingStructure.onCreateView(FragmentCreatingStructu re.java:29) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.app.Fragment.performCreateView(Fragment.java:1699) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:903) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.app.BackStackRecord.run(BackStackRecord.java:682) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1455) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.os.Handler.handleCallback(Handler.java:730) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.os.Handler.dispatchMessage(Handler.java:92) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.os.Looper.loop(Looper.java:176) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at android.app.ActivityThread.main(ActivityThread.java:5419) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at java.lang.reflect.Method.invoke(Method.java:525) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
02-04 10:49:07.994: E/AndroidRuntime(1379):  at dalvik.system.NativeStart.main(Native Method) 

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

Я не могу представить, что происходит на данный момент ... Может ли кто-нибудь помочь мне найти то, что я делаю неправильно?

ПРИМЕЧАНИЕ: Перед тем, как ошибка будет запущена, она заявляет Out of memory on a 638416-byte allocation.

NOTE2: Он также говорит об этом несколько раз, прежде чем приложение выйдет из строя.

02-04 11:23:56.179: I/dalvikvm(7266): "Binder_1" prio=5 tid=9 RUNNABLE 
02-04 11:23:56.179: I/dalvikvm(7266): | group="main" sCount=0 dsCount=0 obj=0x427f2200 self=0x4192fcd0 
02-04 11:23:56.179: I/dalvikvm(7266): | sysTid=7277 nice=0 sched=0/0 cgrp=apps handle=1100151432 
02-04 11:23:56.179: I/dalvikvm(7266): | state=R schedstat=(504400204 75428596 671) utm=34 stm=15 core=2 
02-04 11:23:56.179: I/dalvikvm(7266): at dalvik.system.NativeStart.run(Native Method) 
02-04 11:23:56.179: E/Camera-JNI(7266): Couldn't allocate byte array for JPEG data 
02-04 11:23:56.239: I/dalvikvm-heap(7266): Clamp target GC heap from 71.012MB to 64.000MB 
02-04 11:23:56.239: D/dalvikvm(7266): threadid=1: still suspended after undo (sc=1 dc=1) 
02-04 11:23:56.239: D/dalvikvm(7266): GC_FOR_ALLOC freed 21K, 3% free 63352K/65192K, paused 17ms, total 17ms 
02-04 11:23:56.239: I/dalvikvm-heap(7266): Forcing collection of SoftReferences for 460816-byte allocation 
02-04 11:23:56.259: I/dalvikvm-heap(7266): Clamp target GC heap from 71.012MB to 64.000MB 
02-04 11:23:56.259: D/dalvikvm(7266): threadid=1: still suspended after undo (sc=1 dc=1) 
02-04 11:23:56.259: D/dalvikvm(7266): GC_BEFORE_OOM freed 0K, 3% free 63352K/65192K, paused 20ms, total 20ms 
02-04 11:23:56.259: E/dalvikvm-heap(7266): Out of memory on a 460816-byte allocation. 
+0

Насколько велики ваши изображения в kBytes? –

+0

Попробуйте заменить 'imageView.setBackgroundResource (R.drawable.create_user);' to' imageView.setImageDrawable (getResources(). GetDrawable (R.drawable.create_user)); ' –

+0

Как и 50kb больше или меньше. Они довольно маленькие ... – Sonhja

ответ

1

Попробуйте добавить android: largeHeap = "true", в манифест, чтобы узнать, разрешает ли он это.

Или использовать апи inSampleSize из bitmapfactory к образцу изображения.

0

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

+0

Я пробовал ваше решение Я изменил их размер, даже если они были всего 50Kb. От изображения 400x350px до 300x280px, но он все равно запускает ту же ошибку ... – Sonhja

0

Вы можете изменить размер изображений, чтобы приспособить их к точному размеру изображения, как описано here. Вы даже можете попробовать использовать библиотеки, такие как universal image loader, которые облегчают эту задачу.

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