gpt4 book ai didi

android createBitmap NullPointerException异常

转载 作者:行者123 更新时间:2023-11-29 14:54:47 24 4
gpt4 key购买 nike

当我尝试调用 createBitmap 时出现 java.lang.NullPointerException。这是我的代码:

board = Bitmap.createBitmap(handler.signs.length * cellSize, 
handler.signs[0].length * cellSize, Bitmap.Config.ARGB_8888);

其中宽度和高度也大于零。这是堆栈跟踪:

java.lang.NullPointerException
at android.graphics.Bitmap.createBitmap(Bitmap.java:478)
at org.me.five_stones_project.game.GameView.drawBoard(GameView.java:334)
at org.me.five_stones_project.game.GameView.increaseBoard(GameView.java:293)
at org.me.five_stones_project.game.GameHandler.checkStatus(GameHandler.java:304)
at org.me.five_stones_project.game.GameHandler.makeMyStep(GameHandler.java:211)
at org.me.five_stones_project.game.GameView.onTouchEvent(GameView.java:238)
at android.view.View.dispatchTouchEvent(View.java:3891)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1719)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1150)
at android.app.Activity.dispatchTouchEvent(Activity.java:2102)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1703)
at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2200)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1884)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
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:861)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:619)
at dalvik.system.NativeStart.main(Native Method)

我查看了 Bitmap 的源代码,发现了这个:

476         public static Bitmap createBitmap(int width, int height, Config config) {
477 Bitmap bm = nativeCreate(null, 0, width, width, height, config.nativeInt, true);
478 bm.eraseColor(0); // start with black/transparent pixels
479 return bm;
480 }

所以在调用bm.eraseColor(0)时会出现异常?

有人可以帮助我吗?谢谢!

最佳答案

我跟踪了几个间歇性错误,其中 Bitmap.createBitmap() 返回 null;它们主要发生在中国的 Android 手机中。传递的参数没问题,但我发现每当发生这种情况时,jvm 的内存非常低。

我的理论是,在某些情况下,createBitmap() 会用完内存并返回 null,而不是抛出 OutOfMemoryException(它通常会这样做)。

我的“修复”是检查 createBitmap() 是否返回 null 并抛出我们自己的 OutOfMemoryException 以便正确分类。然后我们的错误记录将其视为设备问题而不是功能错误。

关于android createBitmap NullPointerException异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8902852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com