Галактика s4 и, возможно, все HD-телефоны? Ошибка раздувания памяти

Итак, это приложение, над которым я работаю, отлично работает на действительно старом, несчастном телефоне Android 2.3.3. Однако при запуске на GS4, GS4 выбрасывает из памяти исключения, каждый раз приходится загружать ресурс из чертежей, который предопределен в xml.

<ImageView android:id="@+id/ivLearnMore" android:layout_width="match_parent" android:layout_height="200dp" android:layout_weight="1" android:scaleType="fitCenter" android:src="@drawable/learn_more" /> 

Например, это изображение будет генерировать исключение при раздувании макета, поскольку оно уже имеет назначенное изображение. (256х256)

что происходит?

 05-08 10:33:54.972: E/dalvikvm-heap(24423): Out of memory on a 16777232-byte allocation. 05-08 10:33:54.972: I/dalvikvm(24423): "main" prio=5 tid=1 RUNNABLE 05-08 10:33:54.972: I/dalvikvm(24423): | group="main" sCount=0 dsCount=0 obj=0x41187b38 self=0x40dd1b68 05-08 10:33:54.972: I/dalvikvm(24423): | sysTid=24423 nice=0 sched=0/0 cgrp=apps handle=1074533852 05-08 10:33:54.972: I/dalvikvm(24423): | state=R schedstat=( 0 0 0 ) utm=147 stm=1265 core=0 05-08 10:33:54.972: I/dalvikvm(24423): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-08 10:33:54.972: I/dalvikvm(24423): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 05-08 10:33:54.972: I/dalvikvm(24423): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 05-08 10:33:54.972: I/dalvikvm(24423): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817) 05-08 10:33:54.972: I/dalvikvm(24423): at android.content.res.Resources.loadDrawable(Resources.java:2854) 05-08 10:33:54.972: I/dalvikvm(24423): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 05-08 10:33:54.972: I/dalvikvm(24423): at android.view.View.<init>(View.java:3460) 05-08 10:33:54.972: I/dalvikvm(24423): at android.view.ViewGroup.<init>(ViewGroup.java:446) 05-08 10:33:54.972: I/dalvikvm(24423): at android.widget.LinearLayout.<init>(LinearLayout.java:176) 05-08 10:33:54.972: I/dalvikvm(24423): at android.widget.LinearLayout.<init>(LinearLayout.java:172) 05-08 10:33:54.972: I/dalvikvm(24423): at java.lang.reflect.Constructor.constructNative(Native Method) 05-08 10:33:54.972: I/dalvikvm(24423): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 05-08 10:33:54.972: I/dalvikvm(24423): at android.view.LayoutInflater.createView(LayoutInflater.java:593) 05-08 10:33:54.972: I/dalvikvm(24423): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 05-08 10:33:54.972: I/dalvikvm(24423): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 05-08 10:33:54.972: I/dalvikvm(24423): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 05-08 10:33:54.972: I/dalvikvm(24423): at android.view.LayoutInflater.inflate(LayoutInflater.java:467) 05-08 10:33:54.972: I/dalvikvm(24423): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 05-08 10:33:54.972: I/dalvikvm(24423): at com.travelstorysgps.travelstorys.FragmentInfo.onCreateView(FragmentInfo.java:54) 05-08 10:33:54.972: I/dalvikvm(24423): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-08 10:33:54.972: I/dalvikvm(24423): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 05-08 10:33:54.972: I/dalvikvm(24423): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 05-08 10:33:54.972: I/dalvikvm(24423): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 05-08 10:33:54.972: I/dalvikvm(24423): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 05-08 10:33:54.972: I/dalvikvm(24423): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 05-08 10:33:54.972: I/dalvikvm(24423): at android.os.Handler.handleCallback(Handler.java:725) 05-08 10:33:54.972: I/dalvikvm(24423): at android.os.Handler.dispatchMessage(Handler.java:92) 05-08 10:33:54.972: I/dalvikvm(24423): at android.os.Looper.loop(Looper.java:137) 05-08 10:33:54.972: I/dalvikvm(24423): at android.app.ActivityThread.main(ActivityThread.java:5293) 05-08 10:33:54.972: I/dalvikvm(24423): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 10:33:54.972: I/dalvikvm(24423): at java.lang.reflect.Method.invoke(Method.java:511) 05-08 10:33:54.972: I/dalvikvm(24423): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 05-08 10:33:54.972: I/dalvikvm(24423): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 05-08 10:33:54.972: I/dalvikvm(24423): at dalvik.system.NativeStart.main(Native Method) 05-08 10:33:54.972: D/skia(24423): --- decoder->decode returned false 05-08 10:33:54.972: D/AndroidRuntime(24423): Shutting down VM 05-08 10:33:54.972: W/dalvikvm(24423): threadid=1: thread exiting with uncaught exception (group=0x41186ac8) 05-08 10:33:54.992: E/AndroidRuntime(24423): FATAL EXCEPTION: main 05-08 10:33:54.992: E/AndroidRuntime(24423): android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.LayoutInflater.createView(LayoutInflater.java:619) 05-08 10:33:54.992: E/AndroidRuntime(24423): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.LayoutInflater.inflate(LayoutInflater.java:467) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 05-08 10:33:54.992: E/AndroidRuntime(24423): at com.travelstorysgps.travelstorys.FragmentInfo.onCreateView(FragmentInfo.java:54) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.os.Handler.handleCallback(Handler.java:725) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.os.Handler.dispatchMessage(Handler.java:92) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.os.Looper.loop(Looper.java:137) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.app.ActivityThread.main(ActivityThread.java:5293) 05-08 10:33:54.992: E/AndroidRuntime(24423): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 10:33:54.992: E/AndroidRuntime(24423): at java.lang.reflect.Method.invoke(Method.java:511) 05-08 10:33:54.992: E/AndroidRuntime(24423): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 05-08 10:33:54.992: E/AndroidRuntime(24423): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 05-08 10:33:54.992: E/AndroidRuntime(24423): at dalvik.system.NativeStart.main(Native Method) 05-08 10:33:54.992: E/AndroidRuntime(24423): Caused by: java.lang.reflect.InvocationTargetException 05-08 10:33:54.992: E/AndroidRuntime(24423): at java.lang.reflect.Constructor.constructNative(Native Method) 05-08 10:33:54.992: E/AndroidRuntime(24423): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.LayoutInflater.createView(LayoutInflater.java:593) 05-08 10:33:54.992: E/AndroidRuntime(24423): ... 21 more 05-08 10:33:54.992: E/AndroidRuntime(24423): Caused by: java.lang.OutOfMemoryError 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.content.res.Resources.loadDrawable(Resources.java:2854) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.View.<init>(View.java:3460) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.view.ViewGroup.<init>(ViewGroup.java:446) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.widget.LinearLayout.<init>(LinearLayout.java:176) 05-08 10:33:54.992: E/AndroidRuntime(24423): at android.widget.LinearLayout.<init>(LinearLayout.java:172) 05-08 10:33:54.992: E/AndroidRuntime(24423): ... 24 more 

Вот исключение из другого экрана

 05-08 10:35:29.565: E/dalvikvm-heap(24774): Out of memory on a 16777232-byte allocation. 05-08 10:35:29.565: I/dalvikvm(24774): "main" prio=5 tid=1 RUNNABLE 05-08 10:35:29.565: I/dalvikvm(24774): | group="main" sCount=0 dsCount=0 obj=0x41187b38 self=0x40dd1b68 05-08 10:35:29.565: I/dalvikvm(24774): | sysTid=24774 nice=0 sched=0/0 cgrp=apps handle=1074533852 05-08 10:35:29.565: I/dalvikvm(24774): | state=R schedstat=( 0 0 0 ) utm=175 stm=2086 core=1 05-08 10:35:29.565: I/dalvikvm(24774): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-08 10:35:29.565: I/dalvikvm(24774): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 05-08 10:35:29.565: I/dalvikvm(24774): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 05-08 10:35:29.565: I/dalvikvm(24774): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817) 05-08 10:35:29.565: I/dalvikvm(24774): at android.content.res.Resources.loadDrawable(Resources.java:2854) 05-08 10:35:29.565: I/dalvikvm(24774): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 05-08 10:35:29.565: I/dalvikvm(24774): at android.view.View.<init>(View.java:3460) 05-08 10:35:29.565: I/dalvikvm(24774): at android.view.ViewGroup.<init>(ViewGroup.java:446) 05-08 10:35:29.565: I/dalvikvm(24774): at android.widget.LinearLayout.<init>(LinearLayout.java:176) 05-08 10:35:29.565: I/dalvikvm(24774): at android.widget.LinearLayout.<init>(LinearLayout.java:172) 05-08 10:35:29.565: I/dalvikvm(24774): at java.lang.reflect.Constructor.constructNative(Native Method) 05-08 10:35:29.565: I/dalvikvm(24774): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 05-08 10:35:29.565: I/dalvikvm(24774): at android.view.LayoutInflater.createView(LayoutInflater.java:593) 05-08 10:35:29.565: I/dalvikvm(24774): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 05-08 10:35:29.565: I/dalvikvm(24774): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 05-08 10:35:29.565: I/dalvikvm(24774): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 05-08 10:35:29.565: I/dalvikvm(24774): at android.view.LayoutInflater.inflate(LayoutInflater.java:467) 05-08 10:35:29.565: I/dalvikvm(24774): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 05-08 10:35:29.565: I/dalvikvm(24774): at com.travelstorysgps.travelstorys.FragmentDonate.onCreateView(FragmentDonate.java:53) 05-08 10:35:29.565: I/dalvikvm(24774): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-08 10:35:29.565: I/dalvikvm(24774): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 05-08 10:35:29.565: I/dalvikvm(24774): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 05-08 10:35:29.565: I/dalvikvm(24774): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 05-08 10:35:29.565: I/dalvikvm(24774): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 05-08 10:35:29.565: I/dalvikvm(24774): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 05-08 10:35:29.565: I/dalvikvm(24774): at android.os.Handler.handleCallback(Handler.java:725) 05-08 10:35:29.565: I/dalvikvm(24774): at android.os.Handler.dispatchMessage(Handler.java:92) 05-08 10:35:29.565: I/dalvikvm(24774): at android.os.Looper.loop(Looper.java:137) 05-08 10:35:29.565: I/dalvikvm(24774): at android.app.ActivityThread.main(ActivityThread.java:5293) 05-08 10:35:29.565: I/dalvikvm(24774): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 10:35:29.565: I/dalvikvm(24774): at java.lang.reflect.Method.invoke(Method.java:511) 05-08 10:35:29.565: I/dalvikvm(24774): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 05-08 10:35:29.565: I/dalvikvm(24774): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 05-08 10:35:29.565: I/dalvikvm(24774): at dalvik.system.NativeStart.main(Native Method) 05-08 10:35:29.565: D/AbsListView(24774): [unregisterDoubleTapMotionListener] 05-08 10:35:29.565: I/MotionRecognitionManager(24774): .unregisterListener : / listener count = 0->0, 05-08 10:35:29.565: D/skia(24774): --- decoder->decode returned false 05-08 10:35:29.565: D/AbsListView(24774): unregisterIRListener() is called 05-08 10:35:29.565: D/AndroidRuntime(24774): Shutting down VM 05-08 10:35:29.565: W/dalvikvm(24774): threadid=1: thread exiting with uncaught exception (group=0x41186ac8) 05-08 10:35:29.595: E/AndroidRuntime(24774): FATAL EXCEPTION: main 05-08 10:35:29.595: E/AndroidRuntime(24774): android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.LayoutInflater.createView(LayoutInflater.java:619) 05-08 10:35:29.595: E/AndroidRuntime(24774): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.LayoutInflater.inflate(LayoutInflater.java:467) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 05-08 10:35:29.595: E/AndroidRuntime(24774): at com.travelstorysgps.travelstorys.FragmentDonate.onCreateView(FragmentDonate.java:53) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.os.Handler.handleCallback(Handler.java:725) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.os.Handler.dispatchMessage(Handler.java:92) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.os.Looper.loop(Looper.java:137) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.app.ActivityThread.main(ActivityThread.java:5293) 05-08 10:35:29.595: E/AndroidRuntime(24774): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 10:35:29.595: E/AndroidRuntime(24774): at java.lang.reflect.Method.invoke(Method.java:511) 05-08 10:35:29.595: E/AndroidRuntime(24774): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 05-08 10:35:29.595: E/AndroidRuntime(24774): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 05-08 10:35:29.595: E/AndroidRuntime(24774): at dalvik.system.NativeStart.main(Native Method) 05-08 10:35:29.595: E/AndroidRuntime(24774): Caused by: java.lang.reflect.InvocationTargetException 05-08 10:35:29.595: E/AndroidRuntime(24774): at java.lang.reflect.Constructor.constructNative(Native Method) 05-08 10:35:29.595: E/AndroidRuntime(24774): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.LayoutInflater.createView(LayoutInflater.java:593) 05-08 10:35:29.595: E/AndroidRuntime(24774): ... 21 more 05-08 10:35:29.595: E/AndroidRuntime(24774): Caused by: java.lang.OutOfMemoryError 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.content.res.Resources.loadDrawable(Resources.java:2854) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.View.<init>(View.java:3460) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.view.ViewGroup.<init>(ViewGroup.java:446) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.widget.LinearLayout.<init>(LinearLayout.java:176) 05-08 10:35:29.595: E/AndroidRuntime(24774): at android.widget.LinearLayout.<init>(LinearLayout.java:172) 05-08 10:35:29.595: E/AndroidRuntime(24774): ... 24 more 

И вот третий и другой экран

 05-08 10:37:20.113: E/dalvikvm-heap(25740): Out of memory on a 16777232-byte allocation. 05-08 10:37:20.123: I/dalvikvm(25740): "main" prio=5 tid=1 RUNNABLE 05-08 10:37:20.123: I/dalvikvm(25740): | group="main" sCount=0 dsCount=0 obj=0x41187b38 self=0x40dd1b68 05-08 10:37:20.123: I/dalvikvm(25740): | sysTid=25740 nice=0 sched=0/0 cgrp=apps handle=1074533852 05-08 10:37:20.123: I/dalvikvm(25740): | state=R schedstat=( 0 0 0 ) utm=156 stm=1070 core=1 05-08 10:37:20.123: I/dalvikvm(25740): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-08 10:37:20.123: I/dalvikvm(25740): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 05-08 10:37:20.123: I/dalvikvm(25740): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 05-08 10:37:20.123: I/dalvikvm(25740): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817) 05-08 10:37:20.123: I/dalvikvm(25740): at android.content.res.Resources.loadDrawable(Resources.java:2854) 05-08 10:37:20.123: I/dalvikvm(25740): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 05-08 10:37:20.123: I/dalvikvm(25740): at android.view.View.<init>(View.java:3460) 05-08 10:37:20.123: I/dalvikvm(25740): at android.view.ViewGroup.<init>(ViewGroup.java:446) 05-08 10:37:20.123: I/dalvikvm(25740): at android.widget.LinearLayout.<init>(LinearLayout.java:176) 05-08 10:37:20.123: I/dalvikvm(25740): at android.widget.LinearLayout.<init>(LinearLayout.java:172) 05-08 10:37:20.123: I/dalvikvm(25740): at java.lang.reflect.Constructor.constructNative(Native Method) 05-08 10:37:20.123: I/dalvikvm(25740): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 05-08 10:37:20.123: I/dalvikvm(25740): at android.view.LayoutInflater.createView(LayoutInflater.java:593) 05-08 10:37:20.123: I/dalvikvm(25740): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 05-08 10:37:20.123: I/dalvikvm(25740): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 05-08 10:37:20.123: I/dalvikvm(25740): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 05-08 10:37:20.123: I/dalvikvm(25740): at android.view.LayoutInflater.inflate(LayoutInflater.java:467) 05-08 10:37:20.123: I/dalvikvm(25740): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 05-08 10:37:20.123: I/dalvikvm(25740): at com.travelstorysgps.travelstorys.FragmentConnect.onCreateView(FragmentConnect.java:73) 05-08 10:37:20.123: I/dalvikvm(25740): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-08 10:37:20.123: I/dalvikvm(25740): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 05-08 10:37:20.123: I/dalvikvm(25740): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 05-08 10:37:20.123: I/dalvikvm(25740): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 05-08 10:37:20.123: I/dalvikvm(25740): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 05-08 10:37:20.123: I/dalvikvm(25740): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 05-08 10:37:20.123: I/dalvikvm(25740): at android.os.Handler.handleCallback(Handler.java:725) 05-08 10:37:20.123: I/dalvikvm(25740): at android.os.Handler.dispatchMessage(Handler.java:92) 05-08 10:37:20.123: I/dalvikvm(25740): at android.os.Looper.loop(Looper.java:137) 05-08 10:37:20.123: I/dalvikvm(25740): at android.app.ActivityThread.main(ActivityThread.java:5293) 05-08 10:37:20.123: I/dalvikvm(25740): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 10:37:20.123: I/dalvikvm(25740): at java.lang.reflect.Method.invoke(Method.java:511) 05-08 10:37:20.123: I/dalvikvm(25740): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 05-08 10:37:20.123: I/dalvikvm(25740): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 05-08 10:37:20.123: I/dalvikvm(25740): at dalvik.system.NativeStart.main(Native Method) 05-08 10:37:20.123: D/skia(25740): --- decoder->decode returned false 05-08 10:37:20.123: D/AndroidRuntime(25740): Shutting down VM 05-08 10:37:20.123: W/dalvikvm(25740): threadid=1: thread exiting with uncaught exception (group=0x41186ac8) 05-08 10:37:20.133: E/AndroidRuntime(25740): FATAL EXCEPTION: main 05-08 10:37:20.133: E/AndroidRuntime(25740): android.view.InflateException: Binary XML file line #2: Error inflating class <unknown> 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.LayoutInflater.createView(LayoutInflater.java:619) 05-08 10:37:20.133: E/AndroidRuntime(25740): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.LayoutInflater.inflate(LayoutInflater.java:467) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 05-08 10:37:20.133: E/AndroidRuntime(25740): at com.travelstorysgps.travelstorys.FragmentConnect.onCreateView(FragmentConnect.java:73) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.os.Handler.handleCallback(Handler.java:725) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.os.Handler.dispatchMessage(Handler.java:92) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.os.Looper.loop(Looper.java:137) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.app.ActivityThread.main(ActivityThread.java:5293) 05-08 10:37:20.133: E/AndroidRuntime(25740): at java.lang.reflect.Method.invokeNative(Native Method) 05-08 10:37:20.133: E/AndroidRuntime(25740): at java.lang.reflect.Method.invoke(Method.java:511) 05-08 10:37:20.133: E/AndroidRuntime(25740): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 05-08 10:37:20.133: E/AndroidRuntime(25740): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 05-08 10:37:20.133: E/AndroidRuntime(25740): at dalvik.system.NativeStart.main(Native Method) 05-08 10:37:20.133: E/AndroidRuntime(25740): Caused by: java.lang.reflect.InvocationTargetException 05-08 10:37:20.133: E/AndroidRuntime(25740): at java.lang.reflect.Constructor.constructNative(Native Method) 05-08 10:37:20.133: E/AndroidRuntime(25740): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.LayoutInflater.createView(LayoutInflater.java:593) 05-08 10:37:20.133: E/AndroidRuntime(25740): ... 21 more 05-08 10:37:20.133: E/AndroidRuntime(25740): Caused by: java.lang.OutOfMemoryError 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.content.res.Resources.loadDrawable(Resources.java:2854) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.View.<init>(View.java:3460) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.view.ViewGroup.<init>(ViewGroup.java:446) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.widget.LinearLayout.<init>(LinearLayout.java:176) 05-08 10:37:20.133: E/AndroidRuntime(25740): at android.widget.LinearLayout.<init>(LinearLayout.java:172) 05-08 10:37:20.133: E/AndroidRuntime(25740): ... 24 more 

Solutions Collecting From Web of "Галактика s4 и, возможно, все HD-телефоны? Ошибка раздувания памяти"

(Ответ @ Arash обеспечивает обходное решение, но это моя попытка объяснить, почему это может сработать.)

Таким образом, у вас есть довольно большой образ в каталоге ресурса, который вы ссылаетесь на него в своем XML-файле макета, и вы получаете ошибку в памяти во время выполнения при ее раздувании.

При загрузке доступных ресурсов Android будет выполнять некоторые предварительные масштабирования, если сочтет это необходимым. Из официальной документации :

Основываясь на плотности текущего экрана, система использует любые ресурсы, зависящие от размера или плотности, от вашего приложения и отображает их без масштабирования. Если ресурсы не доступны в правильной плотности, система загружает ресурсы по умолчанию и масштабирует их вверх или вниз по мере необходимости, чтобы соответствовать плотности текущего экрана. Система предполагает, что ресурсы по умолчанию (те из каталога без квалификаторов конфигурации) предназначены для базовой плотности экрана (mdpi), если только они не загружены из каталога ресурсов конкретной плотности.

Это означает 2 вещи:

  1. Если нет ресурса плотности среды, в которой в настоящее время работает приложение, система будет использовать ресурс другой плотности и масштабировать его (вверх или вниз) в соответствии с целевой плотностью
  2. Предполагается, что ресурсы, помещенные в каталог для mdpi нацелены на плотность mdpi

Итак, вы в настоящее время работаете на телефоне xxhdpi. Система хочет загрузить learn_more чтобы нарисовать его на виджете ivLearnMore . Он будет искать его в drawable-xxhdpi в приоритете, но не найдет его там, поэтому он найдет самое близкое, которое он найдет, в этом случае тот, который находится в drawable каталоге (который, как предполагается, нацелен на плотность mdpi), и Загрузите его в память, масштабируя его в 3 раза, что очень много, если ваш файл изображения был значительно большим и может потребовать больше памяти, чем доступно для приложения (и вызвать ошибку из памяти).

Это также объясняет, почему он загрузился нормально на вашем старом дерьмовом устройстве 2.3: устройство, скорее всего, имело плотность mdpi или hdpi, и система не пыталась его масштабировать или делала это в 1,5 раза.

Главное, что вы добавляете ресурс, подходящий для плотности xxhdpi (или более?) В каталоге mdpi.

Таким образом, у вас есть несколько вариантов:

  1. Укажите один ресурс, соответствующий размеру плотности (т.е. по одному в каждом каталоге drawable-* ): это лучшее, чтобы избежать любой проблемы, когда это возможно
  2. Если у вас есть только одна версия ресурса, поместите ее в каталог, соответствующий его плотности ( drawable эквивалент drawable-mdpi !), В вашем случае возможно drawable-xxhdpi (зависит от вашего ресурса)
  3. Поместите ресурс в каталог drawable-nodpi , это не позволит системе выполнить какое-либо предварительное масштабирование ресурса (но это, как правило, для агностических ресурсов плотности, например, которые вы изменяете сами во время выполнения)

У меня была та же проблема: Galaxy S4 и все устройства с разрешением 1920 xxhdpi 1080, сначала проверьте папку xxhdpi и если нет конкретных изображений, она будет масштабировать другие размеры, такие как xhdpi , … поэтому я переместил свои снимки в xxhdpi Папка и она решена!

Я обнаружил проблему. Background images are apparently not handled very efficiently, especially not for a 1920×1080 screen. Therefor you should use a custom xml drawable, a flat color, or a 24-bit jpg. Funny enough I just ran some tests and a 1920×1080 jpeg takes up 95.60 KB while the same image rendered as a png takes up 929.09 KB.

So I did some testing and found that xml defined drawables with gradients etc. are super fast, I then tried my 1920×1080 jpg and it was super fast, so then I put in a 1920×1080 png and got the error. This is funny to me because the png I has set at the start for HD screens was only 910×540 and I would get the error.

So lesson here is if you want a image background use a jpg.