Я столкнулся с ошибкой нехватки памяти, когда я отлаживал свой код, он не работает в следующей строке кода:

 setContentView(R.layout.activity_drawer); 

Ошибка выглядит следующим образом:

01-01 23:16:14.611  24083-24083/? E/CrashReporting﹕ ParseCrashReporting caught a OutOfMemoryError exception for wishlist.oj.app. Building report.
01-01 23:16:14.613  24083-24083/? E/CrashReporting﹕ Handling exception for crash
    java.lang.OutOfMemoryError: Failed to allocate a 86400012 byte allocation with 16777120 free bytes and 66MB until OOM
            at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
            at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
            at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
            at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
            at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:988)
            at android.content.res.Resources.loadDrawableForCookie(Resources.java:2578)
            at android.content.res.Resources.loadDrawable(Resources.java:2471)
            at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
            at android.widget.ImageView.(ImageView.java:146)
            at android.widget.ImageView.(ImageView.java:135)
            at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:58)
            at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:54)
            at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:95)
            at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:938)
            at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:992)
            at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
            at wishlist.oj.app.home.ActivityDrawer.onCreate(ActivityDrawer.java:34)
            at android.app.Activity.performCreate(Activity.java:6072)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2315)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424)
            at android.app.ActivityThread.access$900(ActivityThread.java:155)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:139)

Мой XML-код activity_drawer выглядит следующим образом:


    
        
        
        

        
    
    
    

        

    

Я пробовал много вещей, например, увеличил размер кучи до -Xmx2048m -XX: MaxPermSize = 512m, используя параметры Compiler VM.
Кроме того, я проверил опцию «компилировать независимые модули параллельно», присутствующую в Настройках => Сборка, Выполнение, Среда разработки => компилятор. Но ничего не вышло .. Любая помощь ??

Ответы (2)

Ссылка, показывающая, как эффективно загружать растровые изображения с помощью примера кода.

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Этот тип ошибки обычно возникает, если ваше изображение слишком велико для загрузки (вызывая OutOfMemoryError.

Я бы посоветовал уменьшить масштаб вашего изображения или использовать изображение с более низким разрешением, чтобы его было легче загрузить в память.

Есть также множество источников, которые вы можете посетить, включая документы разработчика Android с образцом приложения, а также видеоролики YouTube, такие как this one.

2022 WebDevInsider