2017-12-18 21 views
0

私はTest1という単純なアクティビティを持っています。他のアクティビティを開始するとImageViewメモリリークが発生する

これはレイアウトコードです。私onDestory方法で

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/test" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <ImageView 
     android:id="@+id/imageview1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:adjustViewBounds="true" 
     android:src="@drawable/load" 
     android:scaleType="fitXY" /> 

</RelativeLayout> 

、私はmImageViewリソースを解放し、Androidのプロファイルで、mImageViewのメモリは、実際にリサイクルされています。

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     releaseImageViewResource(mImageView); 
     layout.removeView(mImageView); 
     mImageView.setVisibility(View.GONE); 
     mImageView.setImageDrawable(null); 
     mImageView = null; 
    } 

enter image description here
しかし、私は他の単純な活動を開始すると、mImageViewのメモリを再利用することはできません。なぜ、どのように問題を解決するのですか? enter image description here

+0

「しかし、私は他の簡単なアクティビティを開始しますか?これは何を意味するのでしょうか? ImageViewで1回目のアクティビティを開始し、そのアクティビティから別のアクティビティを開始したことを意味しますか?少し詳しく説明できますか? – Henry

+0

onDestroyまたはonDestroy()を記述したアクティビティは呼び出されず、 – notTdar

答えて

0

画像を処理するために、私はあなたがGlideまたはPicassoのようなライブラリを使用するために、彼らはあなたのためにすべてを処理します示唆しています。 (メモリリーク、キャッシングなど)

0

「他の単純なアクティビティを開始する」という意味は不明ですが、アプリケーション内の別のアクティビティに移動する場合は、現在のアクティビティ(画像ビュー)を一時停止する必要があります破壊された他のアクティビティに行くときにfinish()を呼び出すか、onPause()メソッドにonDestroy()コードを置くだけです。

関連する問題