11

S6 Edge を Android 6.0.1 に更新するまで、私のプロジェクトは機能していました。

2 回目の起動に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 秒後にアプリケーションがクラッシュします。割り当てられたメモリを確認しましたが、最初の実行では正常 (最大 12MB) ですが、2 回目に割り当てられたメモリは 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 の問題に関する既知のバグはありますか?

携帯電話をバージョン 6.0.1 に更新する前後に変更を加えていないことは 100% 確信しています。

初回起動時のメモリーモニター
ここに画像の説明を入力

2回目の打ち上げ
ここに画像の説明を入力

ノート:

  1. アプリケーションがデバイスに既にインストールされていて、Android Studio を使用してコンパイルしようとすると、クラッシュが発生します
  2. 最初にアプリを機能させるには、アンインストール/再コンパイルして管理する必要があります
  3. Genymotion Android 6.0 デバイスでプロジェクトを実行しようとすると、同じエラーが発生しますが、Android 5.1 genymotion 仮想デバイスでは発生しません。
4

1 に答える 1