Android layout 位图大小超过VM预算

Android layout 位图大小超过VM预算,android-layout,android-activity,out-of-memory,Android Layout,Android Activity,Out Of Memory,我知道有很多关于这个话题的问题和答案,但我有一个非常奇怪的行为,我无法在这个非常奇怪的错误的任何解释中找到 当我将屏幕从一个活动旋转到另一个活动时,该错误在我的应用程序中随机发生,并发生在以下行的新创建的活动中: layout.setBackgroundResource(R.drawable.background); 我试过用一个漂亮的,厚重的jpeg背景和一个阴沉的,浅色的单色背景,但结果是一样的 我试着制作一个简单的应用程序,用一个按钮在两个活动之间切换,但我无法重现错误 我尝试在被指控的

我知道有很多关于这个话题的问题和答案,但我有一个非常奇怪的行为,我无法在这个非常奇怪的错误的任何解释中找到

当我将屏幕从一个活动旋转到另一个活动时,该错误在我的应用程序中随机发生,并发生在以下行的新创建的活动中:

layout.setBackgroundResource(R.drawable.background);
我试过用一个漂亮的,厚重的jpeg背景和一个阴沉的,浅色的单色背景,但结果是一样的

我试着制作一个简单的应用程序,用一个按钮在两个活动之间切换,但我无法重现错误

我尝试在被指控的行之前设置一个断点,这样就没有问题了,就像等待让应用程序工作一样

我从不使用加载位图的方法,我不知道发生了什么

谢谢你的帮助,如果你认为我可以添加一些有用的信息,请让我知道,我添加了我所做的一切,我希望这是足够的

这是logCat输出:

10-01 16:31:16.750: E/ACRA(12765): com.controller fatal error : Unable to start activity ComponentInfo{com.controller/pages.RicercaAllarmiPage}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
10-01 16:31:16.750: E/ACRA(12765): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.controller/pages.RicercaAllarmiPage}: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
10-01 16:31:16.750: E/ACRA(12765):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659)
10-01 16:31:16.750: E/ACRA(12765):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
10-01 16:31:16.750: E/ACRA(12765):  at android.app.ActivityThread.access$1500(ActivityThread.java:121)
10-01 16:31:16.750: E/ACRA(12765):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
10-01 16:31:16.750: E/ACRA(12765):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-01 16:31:16.750: E/ACRA(12765):  at android.os.Looper.loop(Looper.java:130)
10-01 16:31:16.750: E/ACRA(12765):  at android.app.ActivityThread.main(ActivityThread.java:3770)
10-01 16:31:16.750: E/ACRA(12765):  at java.lang.reflect.Method.invokeNative(Native Method)
10-01 16:31:16.750: E/ACRA(12765):  at java.lang.reflect.Method.invoke(Method.java:507)
10-01 16:31:16.750: E/ACRA(12765):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
10-01 16:31:16.750: E/ACRA(12765):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
10-01 16:31:16.750: E/ACRA(12765):  at dalvik.system.NativeStart.main(Native Method)
10-01 16:31:16.750: E/ACRA(12765): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
10-01 16:31:16.750: E/ACRA(12765):  at android.view.LayoutInflater.createView(LayoutInflater.java:518)
10-01 16:31:16.750: E/ACRA(12765):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.LayoutInflater.inflate(LayoutInflater.java:386)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10-01 16:31:16.750: E/ACRA(12765):  at pages.RicercaAllarmiPage.drawRicercaAllarmi(RicercaAllarmiPage.java:112)
10-01 16:31:16.750: E/ACRA(12765):  at pages.RicercaAllarmiPage.onCreate(RicercaAllarmiPage.java:94)
10-01 16:31:16.750: E/ACRA(12765):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
10-01 16:31:16.750: E/ACRA(12765):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623)
10-01 16:31:16.750: E/ACRA(12765):  ... 11 more
10-01 16:31:16.750: E/ACRA(12765): Caused by: java.lang.reflect.InvocationTargetException
10-01 16:31:16.750: E/ACRA(12765):  at java.lang.reflect.Constructor.constructNative(Native Method)
10-01 16:31:16.750: E/ACRA(12765):  at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.LayoutInflater.createView(LayoutInflater.java:505)
10-01 16:31:16.750: E/ACRA(12765):  ... 20 more
10-01 16:31:16.750: E/ACRA(12765): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.Bitmap.nativeCreate(Native Method)
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.Bitmap.createBitmap(Bitmap.java:477)
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.Bitmap.createBitmap(Bitmap.java:444)
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:349)
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:588)
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:563)
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:426)
10-01 16:31:16.750: E/ACRA(12765):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
10-01 16:31:16.750: E/ACRA(12765):  at android.content.res.Resources.loadDrawable(Resources.java:1981)
10-01 16:31:16.750: E/ACRA(12765):  at android.content.res.TypedArray.getDrawable(TypedArray.java:653)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.View.<init>(View.java:1992)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.View.<init>(View.java:1940)
10-01 16:31:16.750: E/ACRA(12765):  at android.view.ViewGroup.<init>(ViewGroup.java:286)
10-01 16:31:16.750: E/ACRA(12765):  at android.widget.LinearLayout.<init>(LinearLayout.java:120)
10-01 16:31:16.750: E/ACRA(12765):  ... 23 more
10-01 16:31:16.750:E/ACRA(12765):com.controller致命错误:无法启动活动组件信息{com.controller/pages.RicercaAllarmiPage}:android.view.InflateException:二进制XML文件行#2:错误膨胀类
10-01 16:31:16.750:E/ACRA(12765):java.lang.RuntimeException:无法启动活动组件信息{com.controller/pages.RicercaAllarmiPage}:android.view.InflateException:二进制XML文件行#2:膨胀类时出错
10-01 16:31:16.750:E/ACRA(12765):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659)
10-01 16:31:16.750:E/ACRA(12765):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675)
10-01 16:31:16.750:E/ACRA(12765):位于android.app.ActivityThread.access$1500(ActivityThread.java:121)
10-01 16:31:16.750:E/ACRA(12765):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
10-01 16:31:16.750:E/ACRA(12765):位于android.os.Handler.dispatchMessage(Handler.java:99)
10-01 16:31:16.750:E/ACRA(12765):位于android.os.Looper.loop(Looper.java:130)
10-01 16:31:16.750:E/ACRA(12765):位于android.app.ActivityThread.main(ActivityThread.java:3770)
10-01 16:31:16.750:E/ACRA(12765):位于java.lang.reflect.Method.Invokenactive(本机方法)
10-01 16:31:16.750:E/ACRA(12765):位于java.lang.reflect.Method.invoke(Method.java:507)
10-01 16:31:16.750:E/ACRA(12765):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
10-01 16:31:16.750:E/ACRA(12765):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
10-01 16:31:16.750:E/ACRA(12765):在dalvik.system.NativeStart.main(本地方法)
10-01 16:31:16.750:E/ACRA(12765):原因:android.view.InflateException:二进制XML文件行#2:膨胀类时出错
10-01 16:31:16.750:E/ACRA(12765):在android.view.LayoutInflater.createView(LayoutInflater.java:518)
10-01 16:31:16.750:E/ACRA(12765):位于com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
10-01 16:31:16.750:E/ACRA(12765):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
10-01 16:31:16.750:E/ACRA(12765):在android.view.LayoutInflater.充气(LayoutInflater.java:386)
10-01 16:31:16.750:E/ACRA(12765):在android.view.LayoutInflater.充气(LayoutInflater.java:320)
10-01 16:31:16.750:E/ACRA(12765):在android.view.LayoutInflater.充气(LayoutInflater.java:276)
10-01 16:31:16.750:E/ACRA(12765):在pages.RicercaAllarmiPage.drawRicercaAllarmi(RicercaAllarmiPage.java:112)
10-01 16:31:16.750:E/ACRA(12765):在pages.RicercaAllarmiPage.onCreate(RicercaAllarmiPage.java:94)中
10-01 16:31:16.750:E/ACRA(12765):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
10-01 16:31:16.750:E/ACRA(12765):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623)
10-01 16:31:16.750:E/ACRA(12765):。。。还有11个
10-01 16:31:16.750:E/ACRA(12765):由以下原因引起:java.lang.reflect.InvocationTargetException
10-01 16:31:16.750:E/ACRA(12765):位于java.lang.reflect.Constructor.constructNative(本机方法)
10-01 16:31:16.750:E/ACRA(12765):位于java.lang.reflect.Constructor.newInstance(Constructor.java:415)
10-01 16:31:16.750:E/ACRA(12765):在android.view.LayoutInflater.createView(LayoutInflater.java:505)
10-01 16:31:16.750:E/ACRA(12765):。。。20多
10-01 16:31:16.750:E/ACRA(12765):原因:java.lang.OutOfMemory错误:位图大小超出VM预算
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.Bitmap.nativeCreate(本机方法)
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.Bitmap.createBitmap(Bitmap.java:477)
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.Bitmap.createBitmap(Bitmap.java:444)
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.Bitmap.createScaledBitmap(Bitmap.java:349)
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:588)
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:563)
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:426)
10-01 16:31:16.750:E/ACRA(12765):在android.graphics.drawable.drawable.createFromResourceStream(drawable.java:697)
10-01 16:31:16.750:E/ACRA(12765):位于android.content.res.Resources.loadDrawable(Resources.java:1981)
10-01 16:31:16.750:E/ACRA(12765):在android.content.res.TypedArray.getDrawable(TypedArray.java:653)
10-01 16:31:16.750:E/ACRA(12765):在android.view.view.(view.java:1992)
10-01 16:31:16.750:E/ACRA(12765):在android.view.view.(view.java:1940)
10-01 16:31:16.750:E/ACRA(12765):在android.view.ViewGroup。(ViewGroup.java:286)
10-01 16:31:16.750:E/ACRA(12765):在android.widget.LinearLayout.(LinearLayout.java:120)
10-01 16:31:16.750:E/ACRA(12765):。。。23多

在android中处理位图是一个非常大的问题, 在您的情况下,设置后台资源最终只能在内部生成位图, 所以