2012-02-15 12 views
0

私は小さなアプリケーションを持っています。このアプリケーションは7つのアクティビティを持っています。基本的に6つはイメージのレイアウトで、もう1つはMapActivityです.5つのレイアウトのうち1つは内部クラスのArrayListを持ち、私のアプリケーションを使用するとメモリが50MB、70MB、111MBに増えます...ガベージコレクタを呼び出そうとしましたが、期待した結果が得られませんでした。Androidアプリケーションのメモリ使用量が多い

public class GC 
{  
    public static final Runtime runtime = Runtime.getRuntime(); 

    public static void Free() 
    { 
     runtime.gc(); 
    } 
} 

答えて

1

こちらをご覧: Avoid memory leaks on Android

  1. あなたが適切にあなたの他の活動(this.finish)を閉鎖していることを確認します。
  2. イメージのコールバックを削除する必要があります。そうしないと、メモリがリークします。

    private void unbindDrawables(View view) { 
    if (view.getBackground() != null) { 
        view.getBackground().setCallback(null); 
    } 
    if (view instanceof ViewGroup) { 
        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { 
         unbindDrawables(((ViewGroup) view).getChildAt(i)); 
        } 
        ((ViewGroup) view).removeAllViews(); 
    } 
    

すなわちunbindDrawables(findViewById(R.id.xml_layout_root))(ビューのルートでそれを呼び出します。!

+0

私はあなたのソリューションを実装しますが、私はまだメモリ上で取得しています、私はクレイジーです、私はアンドロイドアプリケーションでどのようにメモリをきれいにすることができないのか分かりません。 – Gandarez