第二次启动后Android 6.0.1设备上的OutOfMemory错误

cma*_*rio 11 android out-of-memory android-6.0-marshmallow android-6.0.1-marshmallow

我的项目一直在运行,直到我将S6 Edge更新为Android 6.0.1.

第二次启动,应用程序崩溃并出现OutOfMemory错误.

该应用程序在目录中包含2000多个图像,我使用计时器递增计数器并在imageView上显示它们.当onFinish()/ onPause()/ onDestroy()被调用时,我通过将它们设置为null来销毁/取消所有对象,例如定时器,计数器和imageView.

这就是我如何获取/打印图像到imageView

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

它在初始启动时运行(即使我使用生成的APK安装应用程序).当我从最小化的应用程序中删除应用程序时,应用程序在2-3秒后崩溃.我已经检查了分配的内存,并且在第一次运行时是正常的(最多12MB),而在第二次运行时分配的内存是255MB.

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;

}
Run Code Online (Sandbox Code Playgroud)

Media是MediaPlayer,初始化为public,当计数器(i)到达某个点时播放声音

我在另一个运行Android 5.1.3的设备上安装了这个(不确定,但它是5.1的东西).

在Android 6.0.1上最小化应用程序时,OutOfMemory问题是否存在已知错误?

我100%确定在手机更新到6.0.1之前/之后我没有做任何更改

第一次启动时的内存监视器
在此输入图像描述

第二次发射
在此输入图像描述

笔记:

  1. 如果应用程序已安装在设备上,并且我尝试使用Android Studio进行编译,则会发生崩溃
  2. 我必须卸载/重新编译才能让应用程序在第一时间运行
  3. 当我尝试在Genymotion Android 6.0设备上运行我的项目时出现相同的错误,但在Android 5.1 genymotion虚拟设备上没有

Hen*_*que 0

我建议您使用Glide库来有效加载大图像。
您还可以查看这篇文章,了解如何有效加载位图。