Android开发者控制台中的神秘堆栈跟踪(位图大小超过32位)

时间:2012-02-20 23:47:06

标签: android bitmap stack-trace

我在开发者控制台中获得了以下堆栈跟踪。一些报告称“应用程序无法启动”或“启动时崩溃”。

我不知道该怎么做,它在我的应用程序课上没有提到任何内容!任何人都有同样的错误并找到了解决办法吗?

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)

3 个答案:

答案 0 :(得分:5)

如果是数量问题,你必须recycle你的位图 如果这是一个大小问题(你不能加载太大的图像),你必须加载一个较轻的位图副本。

以下是创建较小图片的代码

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

inSampleSize设置为值> 1,请求解码器对原始图像进行二次采样,返回较小的图像以节省存储空间 使用2的幂可以提高效率。

This post可能有用

答案 1 :(得分:1)

  

Bitmap.createBitmap()

     

引发IllegalArgumentException

     

如果x,y,width,height值超出源位图的尺寸,或者宽度是< = 0,或者height是< = 0

首先确保您的x,y,宽度和高度值小于源位图。

我的问题是矩阵。我的矩阵有一个转换值,它使其中一个值超出输入位图的范围。

希望这有帮助

答案 2 :(得分:0)

在我的情况下,这个字符串中出错:

WebView.getSettings().setUseWideViewPort(true);

崩溃仅限于API 18及更少