8

私のプロジェクトでこの奇妙な問題があるようです。
すべて正常に動作しましたが、S6 EdgeをAndroid 6.0.1にアップデートして以来、アプリケーションはの2回目の起動後にOutOfMemoryエラーでクラッシュするようです。Android 6.0.1のOutOfMemoryエラーデバイス

アプリケーションにはディレクトリ内に2000以上の画像が含まれており、カウンタをインクリメントして画像ビューに表示するタイマーを使用しています。 onFinish()/ onPause()/ onDestroy()が呼び出されると、timer、counter、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()メソッド これは初期化さALL私の変数を含んでいます。プライベートまたは

@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; 

} 

変数アクセスがないとメディアがパブリックとして初期化のMediaPlayerで、カウンタ(i)はポイント

に到達したとき、それは音を果たしているとしても、問題はなくは、私の変数が初期化されていない場合

私はAndroid 5.1.3を実行する別のデバイスにこれをインストールしようとしましたが(確かではありませんが5.1のものです)、うまくいきます。

Android 6.0.1でアプリケーションが最小化されたときにOutOfMemoryの問題について既知のバグがあるかどうかは知っていますか?

私はあなたが私はすべての関連ログ/メモリモニタのスクリーンショットなどを投稿したい場合は私に知らせてください、私の携帯電話は、バージョン6.0.1

に更新した後、私は/の前に何らかの変更を加えなかったことを100%確信しています第一起動時に

メモリーモニター enter image description here

セカンド起動

enter image description here

注:

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

[mcve]を入力してください。これには、クラッシュするコードとクラッシュのスタックトレースが含まれます。 – CommonsWare

+1

興味のあるものは、onDestroyも呼び出されますか? onDesroyはこれを行うための信頼できる場所ではなかったため、イメージとビデオに関連するクリーンアップコードをonPauseに移動してonResumeに復元する必要がありました。 – Ewald

+0

はい、私はこのメソッドが – cmario

答えて

0

画像を管理するために、代わりにpicasso()を使用してみてください。少なくとも、動作が異なるかどうかを確認するための簡単な実験です。

関連する問題