在我将 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++;
它在首次启动时运行(即使我使用生成的 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;
}
Media 是一个初始化为 public 的 MediaPlayer,当 counter(i) 到达一个点时它会播放声音
我将它安装在另一台运行 Android 5.1.3 的设备上(不确定,但它是 5.1 的东西)。
在 Android 6.0.1 上最小化应用程序时是否存在 OutOfMemory 问题的已知错误?
我 100% 确定在我的手机更新到版本 6.0.1 之前/之后没有进行任何更改
笔记:
- 如果应用程序已安装在设备上,并且我尝试使用 Android Studio 对其进行编译,则会发生崩溃
- 我必须卸载/重新编译才能让应用程序在第一时间运行
- 当我尝试在 Genymotion Android 6.0 设备上运行我的项目时遇到同样的错误,但在 Android 5.1 genymotion 虚拟设备上却没有