2013-05-08 23 views
8

Vì vậy, ứng dụng này tôi đang làm việc trên, hoạt động tốt trên một thực sự cũ đau khổ Android 2.3.3 điện thoại. Tuy nhiên, khi chạy nó trên GS4, GS4 sẽ loại bỏ các ngoại lệ bộ nhớ mỗi lần phải tải một tài nguyên từ các drawables, được định nghĩa trước trong xml.galaxy s4 và có thể tất cả điện thoại HD? ra khỏi bộ nhớ lỗi bố trí thổi phồng

<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" /> 

Ví dụ: Hình ảnh này sẽ ném một ngoại lệ khi tăng bố cục vì bố cục đã được gán hình ảnh. (256x256)

điều gì đang xảy ra?

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 

Đây là một ngoại lệ từ một màn hình khác nhau

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 

và đây là một thứ 3 và màn hình khác nhau

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 
+1

Một số đầu ra Logcat sẽ tốt đẹp :) – Johannes

+0

như bạn đã yêu cầu. – WIllJBD

+1

trông giống như một vấn đề phổ biến, cùng xảy ra với tôi – cgalvao1993

Trả lời

6

tôi đã phát hiện ra vấn đề. Hình ảnh nền rõ ràng không được xử lý rất hiệu quả, đặc biệt là không cho màn hình 1920x1080. Do đó, bạn nên sử dụng một tùy chỉnh xml drawable, một màu phẳng, hoặc một jpg 24-bit. Hài hước đủ Tôi chỉ chạy một số xét nghiệm và một jpeg 1920x1080 chiếm 95,60 KB trong khi hình ảnh tương tự như một png chiếm 929,09 KB. Vì vậy, tôi đã làm một số thử nghiệm và thấy rằng xml định nghĩa drawables với gradient vv là siêu nhanh, sau đó tôi đã thử jpg 1920x1080 của tôi và nó đã được siêu nhanh, vì vậy sau đó tôi đặt trong một png 1920x1080 và có lỗi. Điều này là buồn cười với tôi bởi vì png tôi đã đặt ở đầu cho màn hình HD chỉ 910x540 và tôi sẽ nhận được lỗi.

Vì vậy, bài học ở đây là nếu bạn muốn hình nền sử dụng jpg.

+0

Tôi tự hỏi, tại sao các tệp hình ảnh nhỏ (như 910x540 png) có thể gây ra tràn bộ nhớ của kích thước heap VM. Khách hàng của tôi đang expierencing cùng một vấn đề với S4s của họ và FullHD-Devices.Even nếu tôi sử dụng android: largeHeap = "true" trong Manifest. Trước tiên, tôi đã cố gắng để có được bộ nhớ Heap: TextView infotxt_ram = (TextView) findViewById (R.id.infotxt_ram); ActivityManager am = (ActivityManager) này.getSystemService (ACTIVITY_SERVICE); infotxt_ram.setText (am.getMemoryClass() + "MB"); Điều này sẽ hiển thị 128MB! – lx222

+0

Hãy làm một chút Toán. 910x540x32bit (có kênh alpha) = 1,87 MB. Về mặt toán học, tôi có thể hiển thị 68 Hình ảnh có kích thước đó!?! Ok chính quy trình cũng ăn một lượng lớn kích thước đó nhưng một số hình ảnh nhỏ ví dụ như 910x540px không nên cho chúng tôi lỗi OutOfMemorry. Tôi nói đúng, phải không? – lx222

+0

Làm cách nào để giải quyết vấn đề này nếu hình ảnh của tôi có độ trong suốt? Tôi không thể chuyển đổi nó thành jpg ... – jpprade

7

tôi đã cùng một vấn đề và đó là: Galaxy S4 và tất cả các thiết bị độ phân giải 1920 * 1080, kiểm tra trong xxhdpi thư mục đầu tiên và nếu không có hình ảnh cụ thể, nó sẽ mở rộng quy mô khác như xhdpi ... vì vậy tôi di chuyển của tôi hình ảnh đến xxhdpi thư mục và nó đã được giải quyết!

+0

về hình ảnh được kéo qua mạng – CQM

+0

cảm ơn, đã làm việc cho tôi. –

15

(@ câu trả lời Arash cung cấp một workaround, nhưng đây là nỗ lực của tôi để giải thích tại sao nó có thể làm việc.)

Vì vậy, bạn có một hình ảnh khá lớn trong thư mục tài nguyên drawable, bạn tham khảo nó trong cách bố trí của bạn tệp xml và nhận được lỗi bộ nhớ ngoài khi chạy.

Khi tải tài nguyên có thể kéo, Android sẽ thực hiện một số trước khi mở rộng quy mô nếu xét thấy cần thiết. Từ số official documentation:

Dựa trên mật độ màn hình hiện tại, hệ thống sử dụng bất kỳ tài nguyên kích thước hoặc mật độ cụ thể nào từ ứng dụng của bạn và hiển thị chúng mà không cần mở rộng. Nếu tài nguyên không có sẵn trong mật độ chính xác, hệ thống sẽ tải các tài nguyên mặc định và chia tỷ lệ lên hoặc xuống khi cần để phù hợp với mật độ của màn hình hiện tại. Hệ thống giả định rằng các tài nguyên mặc định (các thư mục từ một thư mục không có các vòng định cấu hình) được thiết kế cho mật độ màn hình cơ sở (mdpi), trừ khi chúng được tải từ một thư mục tài nguyên cụ thể mật độ.

Điều này có nghĩa 2 điều:

  1. Nếu không có tài nguyên của mật độ của môi trường ứng dụng đang chạy trên, hệ thống sẽ mất một nguồn lực của mật độ khác và quy mô nó (lên hoặc xuống) để phù hợp với mật độ mục tiêu
  2. Tài đặt trong thư mục drawable được giả định được nhắm mục tiêu mật độ mdpi

Vì vậy, bạn hiện tại ly chạy trên điện thoại xxhdpi. Hệ thống muốn tải tài nguyên có thể vẽ learn_more để vẽ nó trên tiện ích ivLearnMore. Nó sẽ tìm kiếm nó ở mức ưu tiên drawable-xxhdpi nhưng sẽ không tìm thấy ở đó, vì vậy sẽ tìm nó gần nhất, trong trường hợp này, cái trong thư mục drawable (mà nó giả định là nhắm mục tiêu mật độ mdpi) và tải nó vào bộ nhớ mở rộng nó by a factor of 3 mà là rất nhiều nếu tập tin hình ảnh của bạn là đáng kể lớn và có thể dễ dàng yêu cầu bộ nhớ nhiều hơn là có sẵn cho các ứng dụng (và gây ra một lỗi bộ nhớ).

Đây cũng là lý do tại sao nó được tải tốt trên thiết bị 2.3 cũ của bạn: thiết bị có nhiều khả năng mật độ mdpi hoặc hdpi và hệ thống không cố gắng nâng cấp nó hoặc đã làm điều đó bởi hệ số 1,5.

Điều chính ở đây là bạn đặt tài nguyên phù hợp với mật độ xxhdpi (hoặc nhiều hơn?) Trong thư mục mdpi.

Vì vậy, bạn có nhiều lựa chọn:

  1. cung cấp một nguồn lực một cách thích hợp có kích thước mỗi mật độ (tức là một trong mỗi thư mục drawable-*): đây là tốt nhất để tránh bất kỳ vấn đề, khi có thể
  2. nếu bạn chỉ có một phiên bản của tài nguyên, đặt nó vào thư mục khớp với mật độ của nó (drawable tương đương với drawable-mdpi!), trong trường hợp của bạn có thể là drawable-xxhdpi (tùy thuộc vào tài nguyên của bạn)
  3. đặt tài nguyên vào thư mục drawable-nodpi, điều này sẽ ngăn chặn hệ thống điện tử thực hiện bất kỳ quy mô trước nào của tài nguyên (nhưng điều này thường dành cho các tài nguyên thuyết bất khả tri mật độ, ví dụ: bạn tự thay đổi kích thước khi đang chạy)
+1

người đàn ông ... cảm ơn bạn rất nhiều vì đã giải thích điều này .. Tôi cuối cùng cũng đã khắc phục được một vấn đề lớn trong ứng dụng của mình. Tôi đã có rất nhiều hình ảnh lớn trong "bản vẽ" của tôi và đã gây ra lãng phí bộ nhớ lớn ... damn –

+0

Đó là một câu trả lời tuyệt vời. – pukingminion