Card.io java.lang.OutOfMemoryError

时间:2014-09-02 08:32:54

标签: 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 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);

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

1 个答案:

答案 0 :(得分:0)

Android位图将图像保留在本机内存中,而不是Java堆上。如果快速分配一堆映像,就会发生这种情况,因为清理只在Java GC运行时发生,这与Java堆相关联。确保您在完成与之合作的图片后致电bitmap.recycle()可以提供帮助。