首页 > 解决方案 > intent.getBooleanExtra 导致 java.lang.OutOfMemoryError

问题描述

我遇到了一个intent.getBooleanExtra触发OutOfMemoryError异常的问题。

崩溃发生在 Android 5.0 手机 (Asus ZenFone 2 ZE551ML) 上,其可用 RAM 超过 1GB,可用磁盘空间超过 6GB。

崩溃堆栈:

Fatal Exception: java.lang.OutOfMemoryError: int[] of length 2015679692 would overflow
       at android.util.ArrayMap.allocArrays(ArrayMap.java:198)
       at android.util.ArrayMap.ensureCapacity(ArrayMap.java:309)
       at android.os.BaseBundle.unparcel(BaseBundle.java:219)
       at android.os.BaseBundle.getBoolean(BaseBundle.java:658)
       at android.os.Bundle.getBoolean(Bundle.java:603)
       at android.content.Intent.getBooleanExtra(Intent.java:4781)
       at MyClass.onActivityCreated(MyClass.java:33)

我的代码看起来像:

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        Intent intent = activity.getIntent();
        if (intent != null && !intent.getBooleanExtra(ActionIntent.MYCONSTANT, false)) {
        ....
        }
    }

知道为什么我会因为getBooleanExtra通话和超过 1GB 的可用 RAM 而崩溃吗?

标签: javaandroidandroid-intentcrashout-of-memory

解决方案


推荐阅读