java - Card.io java.lang.OutOfMemoryError

标签 java android card.io

有时卡被捕获后应用程序会崩溃。

java.lang.OutOfMemoryError
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:924)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:901)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:868)
       at io.card.payment.ah.a()
       at io.card.payment.CardIOActivity.a()
       at io.card.payment.CardScanner.onPreviewFrame()
       at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1016)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5579)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
       at dalvik.system.NativeStart.main(NativeStart.java)

每次我在 Galaxy S5 上拍摄时都会发生这种情况。 以下是我用来启动扫描 Intent 的参数:

Intent scanIntent = new Intent(CardInfoActivity.this, CardIOActivity.class);
scanIntent.putExtra(CardIOActivity.EXTRA_APP_TOKEN, Constants.CARD_IO_TOKEN);
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_CVV, true);
scanIntent.putExtra(CardIOActivity.EXTRA_REQUIRE_EXPIRY, true);
scanIntent.putExtra(CardIOActivity.EXTRA_SUPPRESS_CONFIRMATION, true);
scanIntent.putExtra(CardIOActivity.EXTRA_SUPPRESS_MANUAL_ENTRY, true);
startActivityForResult(scanIntent, MY_SCAN_REQUEST_CODE);

也许有人知道如何解决这个问题?

最佳答案

Android 位图将图像保存在 native 内存中,而不是 Java 堆上。如果您快速分配一堆图像,则可能会发生这种情况,因为清理仅在 Java GC 运行时发生,而 Java GC 与 Java 堆相关。确保在处理完一直使用的图像后调用 bitmap.recycle() 会有所帮助。

关于java - Card.io java.lang.OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25619098/

相关文章:

android - 如何使用 card.io android SDK 在人类可读格式中获取完整的卡号?

ios - 将 card.io sdk 添加到项目时链接器命令失败

android - Paypal CardIO 返回异常

java - 为什么Chrome Java更新会在64位计算机上安装全局32位JRE?

java - PubNub 的 Android 服务

java - 设置对象彼此相等(java)

android - 某种异步任务队列

android - Kotlin - 如何在 "lateinit"和 "nullable variable"之间做出决定?

java - 如何通过从java给出变量来在bash脚本中执行git命令?

Java: new AbstractClass(){} 这个声明叫什么?