Подтвердить что ты не робот

Ошибка OutOfMemory на устройствах Android 6.0.1 после второго запуска

Мой проект работал, пока я не обновил свой S6 Edge до Android 6.0.1.

Приложение вылетает с ошибкой OutOfMemory после второго запуска.

Приложение содержит 2000+ изображения в каталоге, и я использую таймер для увеличения счетчика и отображения их в imageView. Когда вызывается onFinish()/onPause()/onDestroy(), я уничтожаю/отменяю все объекты, такие как таймеры, счетчик и imageView, устанавливая их в null.

Вот как я выбираю/распечатываю изображение в imageView

int resID = getResources().getIdentifier("animation"+i , "drawable", getPackageName());
    Drawable animationFrame = ContextCompat.getDrawable(this, resID);
    animationView.setImageDrawable(animationFrame);
    i++;

Он запускается при первом запуске (даже если я устанавливаю приложение с помощью сгенерированного APK). Когда я удаляю приложение из свернутых приложений, оно вылетает через 2-3 секунды. Я проверил выделенную память, и это нормально (до 12 МБ) при первом запуске, тогда как на втором выделенная память составляет 255 МБ.

Метод onDestroy() Это включает ВСЕ инициализированные мои переменные. Мои переменные инициализируются как частные или без переменной доступа.

@Override
protected void onDestroy() {
    super.onDestroy();
    pauseAnimation();
    animationView.setImageDrawable(null);
    animationView = null;
    justAnimation = null;
    buttonSign = null;
    i = 0;
    media.stop();
    media  = null;
    deathRateEU = 0;
    deathRateUK = 0;
    labelNumber = null;
    labelNumberUK = null;
    buttonSign = null;
    loadingEU = null;
    loadingUK = null;

}

Media - это MediaPlayer, инициализированный как открытый, и он воспроизводит звук, когда counter (i) достигает точки

Я установил это на другом устройстве, которое работает под управлением Android 5.1.3 (не уверен, но это что-то 5.1).

Существует ли известная ошибка для проблем OutOfMemory, когда приложение свернуто на Android 6.0.1?

Я на 100% уверен, что я не внес никаких изменений до/после того, как мой телефон обновился до версии 6.0.1

Монитор памяти при первом запуске
enter image description here

Второй запуск
enter image description here

Заметки:

  1. Если приложение уже установлено на устройстве, и я пытаюсь скомпилировать его с помощью Android Studio, происходит сбой
  2. Мне нужно удалить/перекомпилировать, чтобы приложение заработало с первого раза
  3. Я получаю ту же ошибку при попытке запустить свой проект на устройстве Genymotion Android 6.0, но не на виртуальном устройстве Android 5.1 genymotion
4b9b3361

Ответ 1

Вместо этого вы можете использовать picasso() для управления изображениями.... по крайней мере, как быстрый эксперимент, чтобы увидеть, ведет ли он себя по-другому.

Ответ 3

Я бы порекомендовал вам использовать библиотеку Glide для эффективной загрузки больших изображений.
Вы также можете проверить эту статью о том, как эффективно загружать растровые изображения.