所以这个我正在开发的应用程序,在一款非常古怪的Android 2.3.3手机上运行得很好。但是当在GS4上运行它时,GS4每次都必须从drawable中加载一个资源,这是在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
这是第3个不同的屏幕
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
答案 0 :(得分:16)
(@ Arash的答案提供了一种解决方法,但这是我尝试解释它为何可行的原因。)
因此,您在drawable
资源目录中有一个相当大的图像,您在布局xml文件中引用它,并在运行时在运行时获得内存不足错误。
在加载可绘制资源时,如果认为有必要,Android会执行一些预缩放。来自official documentation:
根据当前屏幕的密度,系统会使用应用程序中任何特定于大小或密度的资源,并在不进行缩放的情况下显示它们。如果资源的密度不正确,系统会加载默认资源并根据需要向上或向下缩放以匹配当前屏幕的密度。系统假定默认资源(来自没有配置限定符的目录中的资源)是针对基线屏幕密度(mdpi)设计的,除非它们是从密度特定的资源目录加载的。
这意味着两件事:
drawable
目录中的资源定位为mdpi
密度所以你目前正在使用xxhdpi手机。系统希望加载learn_more
可绘制资源以在ivLearnMore
小部件上绘制它。它将在drawable-xxhdpi
中优先查找它,但不会在那里找到它,所以将采用它找到的最接近的一个,在这种情况下是drawable
目录中的一个(它假设是定位mdpi密度),并将其加载到内存中,将其缩放by a factor of 3,如果您的图像文件非常大并且很容易需要比应用程序可用的内存更多的内存(并导致内存不足错误),那么这一点很多。
这也是为什么它在旧的糟糕的2.3设备上正常加载:该设备最有可能是mdpi或hdpi密度,系统没有尝试升级它或只做1.5倍。
这里主要是你在mdpi目录中放置一个适合xxhdpi(或更多?)密度的资源。
所以你有几个选择:
drawable-*
目录中有一个):这是最好的,以避免任何问题,如果可能的话drawable
等同于drawable-mdpi
!),在您的情况下可能drawable-xxhdpi
(取决于你的资源)drawable-nodpi
目录中,这将阻止系统执行任何资源预扩展(但这通常用于与密度无关的资源,例如您在运行时自行调整大小)答案 1 :(得分:7)
我遇到了同样的问题,那就是:Galaxy S4
和所有1920 * 1080分辨率设备,首先检查xxhdpi
文件夹,如果没有特定图片,它会缩放其他尺寸,例如{{ 1}},...所以我将我的照片移到了xhdpi
文件夹,它解决了!
答案 2 :(得分:6)
我发现了这个问题。背景图像显然不能非常有效地处理,尤其是对于1920x1080的屏幕。因此,您应该使用自定义xml drawable,平面颜色或24位jpg。有趣的是,我刚刚运行了一些测试,1920x1080 jpeg占用了95.60 KB,而渲染为png的同一图像占用了929.09 KB。
所以我做了一些测试,发现xml定义了带渐变等的drawables超级快,然后我尝试了我的1920x1080 jpg,它超级快,所以然后我输入了1920x1080 png并得到了错误。这对我来说很有趣,因为我在高清屏幕开始时设置的png仅为910x540,我会收到错误。
这里的教训是,如果你想让图像背景使用jpg。