2014-10-19 98 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

相關問題