2012-02-20 21 views
9

我在開發人員控制檯中獲得以下堆棧跟蹤。有些報告稱「應用程序無法啓動」或「啓動時崩潰」。Android開發人員控制檯中的神祕堆棧跟蹤(位圖大小超過32位)

我不知道該怎麼做,它沒有提及我的應用程序的類!任何人都有同樣的錯誤,並找到一個修復?

java.lang.IllegalArgumentException: bitmap size exceeds 32bits 
at android.graphics.Bitmap.nativeCreate(Native Method) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:695) 
at android.view.View.buildDrawingCache(View.java:6646) 
at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1345) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1591) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054) 
at android.view.ViewRoot.draw(ViewRoot.java:1632) 
at android.view.ViewRoot.performTraversals(ViewRoot.java:1335) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1991) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:150) 
at android.app.ActivityThread.main(ActivityThread.java:4358) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
at dalvik.system.NativeStart.main(Native Method) 
+1

可能的情況下,您的主要活動加載資源相關到它的佈局在你的範圍之外。無論如何,似乎有一些圖像引起問題,並且如果沒有太多圖像嘗試用例如一個接一個地替換它們,默認的android圖標,直到找到引起問題的人。 – harism 2012-02-21 00:31:47

+0

我有時在開發小部件時遇到了同樣的問題。它通常是通過(它在Eclipse的btw中)清理項目(菜單Project-> Clean),然後刷新項目並再次構建它。但是如果有人知道它發生的確切原因,那就太棒了,我肯定會爲答案投票! ;) – 2012-02-21 01:04:44

回答

5

如果是數量問題,您必須recycle您的位圖。
如果是尺寸問題(無法加載太大的圖像),則必須加載較輕的位圖副本。

下面是創建較小的圖像

Options thumbOpts = new Options(); 
thumbOpts.inSampleSize = 4; 
Bitmap bmp = BitmapFactory.decodeFile(imagePath, mThumbOpts); 

inSampleSize設置爲值> 1的代碼,要求解碼器以子採樣原始圖像,返回一個較小的圖像以節省內存。
使用2的冪作爲效率更高。

This post可能是有用的

+2

這不會工作,它與大小無關,請參閱我的問題:[here](http://stackoverflow.com/questions/15008386/android-bitmap-size-exceeds-32-bit-in- dialogfragment/15008630#15008630) – stefple 2013-02-22 07:58:46

+1

這是如何解決問題的?在問題中沒有提到'ImageView',也沒有任何創建位圖的跡象!由於某些原因,View.buildDrawingCache正在創建一個圖像太大的.... – TWiStErRob 2014-08-17 19:30:31

1

Bitmap.createBitmap()

拋出:IllegalArgumentException -

如果在x,y,寬度,高度的值是源位圖的尺寸之外,或者寬度爲< = 0或高度爲< = 0

先讓su您的x,y,寬度和高度值比源位圖小。

這個問題對我來說是矩陣。我的矩陣有一個翻譯值,它使得輸入位圖邊界之外的值之一。

希望這有助於

0

對我來說,這是錯誤的字符串:

WebView.getSettings().setUseWideViewPort(true); 

崩潰只是在API 18,少

相關問題