2014-10-19 101 views
-1

我遇到问题。我的应用程序正常工作,但是当我在布局XML中添加新的ImageView时,它会崩溃。是因为在一个活动中有太多的图像或太多的内存?图像有511 kb和第733 X 3999添加ImageView时崩溃的应用程序

这里是我的崩溃日志:

10-19 14:09:04.762: E/AndroidRuntime(15605): FATAL EXCEPTION: main 
10-19 14:09:04.762: E/AndroidRuntime(15605): Process: com.formulas.mpc, PID: 15605 
10-19 14:09:04.762: E/AndroidRuntime(15605): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.formulas.mpc/com.formulas.mpc.ActivityPhysicsMenu}: android.view.InflateException: Binary XML file line #295: Error inflating class <unknown> 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2237) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.ActivityThread.access$800(ActivityThread.java:144) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.os.Handler.dispatchMessage(Handler.java:102) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.os.Looper.loop(Looper.java:212) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.ActivityThread.main(ActivityThread.java:5135) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at java.lang.reflect.Method.invokeNative(Native Method) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at java.lang.reflect.Method.invoke(Method.java:515) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at dalvik.system.NativeStart.main(Native Method) 
10-19 14:09:04.762: E/AndroidRuntime(15605): Caused by: android.view.InflateException: Binary XML file line #295: Error inflating class <unknown> 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.createView(LayoutInflater.java:620) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:694) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:297) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.Activity.setContentView(Activity.java:1929) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.support.v7.app.ActionBarActivity.superSetContentView(ActionBarActivity.java:216) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.support.v7.app.ActionBarActivityDelegateICS.setContentView(ActionBarActivityDelegateICS.java:110) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:76) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at com.formulas.mpc.ActivityPhysicsMenu.onCreate(ActivityPhysicsMenu.java:20) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.Activity.performCreate(Activity.java:5231) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2201) 
10-19 14:09:04.762: E/AndroidRuntime(15605): ... 11 more 
10-19 14:09:04.762: E/AndroidRuntime(15605): Caused by: java.lang.reflect.InvocationTargetException 
10-19 14:09:04.762: E/AndroidRuntime(15605): at java.lang.reflect.Constructor.constructNative(Native Method) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.view.LayoutInflater.createView(LayoutInflater.java:594) 
10-19 14:09:04.762: E/AndroidRuntime(15605): ... 28 more 
10-19 14:09:04.762: E/AndroidRuntime(15605): Caused by: java.lang.OutOfMemoryError 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:594) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:429) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:856) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.content.res.Resources.loadDrawable(Resources.java:2129) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.widget.ImageView.<init>(ImageView.java:129) 
10-19 14:09:04.762: E/AndroidRuntime(15605): at android.widget.ImageView.<init>(ImageView.java:119) 
10-19 14:09:04.762: E/AndroidRuntime(15605): ... 31 more 
+0

它不是关于影像尺寸,请检查您的XML代码的 – 2014-10-19 12:20:22

+0

可能重复[安卓:BitmapFactory.decodeStream()了内存与2MB免费堆一个400KB的文件(HTTP://计算器问题/ 11820266/android-bitmapfactory-decodestream-out-of-memory-with-a-400kb-file-with-2mb-f) – ToYonos 2014-10-19 12:26:34

回答

0

它不是图像的兄弟..这是你的图像的分辨率的数量..

733 x 3999 //c'mon bro are you design for a big tablet? 

,并加上你有该决议这就是许多人Ÿ 修剪他们可以说400 * 400

+0

嗯,我有长文本,需要格式化并放置一些照片到它,所以它必须在更大的分辨率......但是,谢谢,我把它削减到458x2500,它的工作原理!我怎样才能让它看起来像733x3999?只需更改layout_width并将其改为px? – user3932494 2014-10-19 12:41:16

+1

有这样一句话:“你的新年度决议越大,它变得越好”。是的,所以尺寸越大,看起来越清晰,所以如果你真的想要一个桌面外观分辨率的图片,在一个小的设备上,它的不会工作.. 458 * 2500甚至可能在QVGA(240x320)设备上崩溃..从我在回答中给出的链接中引用,所以要回答您的下一个问题适用于平板电脑和手机请按照文档...快乐的编码。 – Elltz 2014-10-19 12:51:22

+0

,如果你试图用宽度和长度来拉伸它会看起来拉长和模糊 - 这是一个不错的..所以发挥你看到的适合的尺寸..使用scaleType =“Fitx-y”; - (我不完全记得的格式,但把scaleType适合x和y)..适合图像视图中的图像,以符合您的首选尺寸 – Elltz 2014-10-19 12:59:18

1

你的问题本身所具有的答案。 Youu正在使用太多的图像视图,这是应用程序崩溃的原因。 如果可能的话,通过用简单的布局替换图像视图并添加背景来减少图像视图的数量。

0

正如我们所知道的,在android中,图像的内存分配对于图像的分配非常少,所以每当图像的大小大于分配的堆内存时,我们就会得到OutOfMemory异常。

所以主要是因为图片的大小,请根据项目中多个drawables文件夹中的设备减小图片的大小。在此之后,你将不会得到这种错误。

请根据设备使用标准尺寸的图像。
plaese看到这一点:http://developer.android.com/guide/practices/screens_support.html

+0

谢谢,如上所述,我有长文本,所以我需要最大的决议。 – user3932494 2014-10-19 12:42:34

相关问题