0

まず、API 10 を使用しています。

アクティビティ A とアクティビティ B があります。

A からアクティビティ B を起動します。次に、B の oncreate() で finish() を呼び出します。次に、A からアクティビティ B を再度起動します。これを行うと、ネイティブ ヒープが毎回約 0.5 MB ずつ増加し続けます。

これは、アクティビティ B にある唯一のコードです。

            super.onCreate(savedInstanceState);
            getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
            logHeap(); //keeps track of native heap size
            setContentView(R.layout.gameplay);
            finish();
            return;  

レイアウト内のビットマップはリサイクルされていませんか? ネイティブ ヒープ サイズが増え続ける理由がわかりません。

4

3 に答える 3

0

Bitmap が不要になったら、必ず bitmap.recycle() を呼び出すようにしてください。Bitmap が GC によってリサイクルされるまでに時間がかかる場合があります。

于 2013-05-03T21:17:04.737 に答える
0

そのほとんどを見つけました。

どうやらアセットから作成

Typeface tf  = Typeface.createFromAsset(getAssets(),"fonts/Capture_it.ttf");

ガベージコレクションされません。

それを削除すると、ほとんどの問題が解決したようです。

于 2013-05-03T21:58:38.477 に答える
-1

正確な答えではありませんが、答えを得るための方法です。Eclipse でMAT ( http://www.eclipse.org/mat/ ) を使用してアプリをデバッグすると、アプリのネイティブ ヒープの使用量が増加している原因を正確に突き止めることができます。

さらに、Eclipse から DDMS にアクセスすると、ここで説明する手法を使用して、どのオブジェクトが成長しているかを表示できる場合があります。

于 2013-05-03T21:30:21.497 に答える