私の小さなアプリケーションは、5番目または6番目の画面回転後に常にクラッシュします。 2つの主要なレイアウトが定義されています.1つは風景用のレイアウトです。メモリリークを探して一日中過ごした後、私は問題を見つけました。私はJPGをメインアクティビティのバックグラウンドとして定義しました。 JPGをPNGに変更した後、メモリの問題は解決されました。アクティビティの背景としてJPGがメモリリークを生成する
バックグラウンドはdrawableとして定義され、main.xmlで定義されています。
2.2(エミュレータ)のアプリをテストしたが、2.3.1(エミュレータも)のアプリがクラッシュして問題が発生していませんでした。
誰かがこの問題を再現できますか?
今、私は、次のコードに私のアプリを削減:今すぐメモリが一定... あなたは、これがメモリリークを回避するために必要であることを画像化することができます
package at.memtest;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.widget.LinearLayout;
public class MemTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onDestroy() {
recycleImages();
super.onDestroy();
}
@Override
protected void onPause() {
recycleImages();
super.onPause();
}
private void recycleImages() {
final LinearLayout theView = (LinearLayout) findViewById(R.id.main_layout);
if (theView != null) {
final BitmapDrawable background = (BitmapDrawable) theView.getBackground();
if (background != null) {
background.getBitmap().recycle();
}
}
}
}
? 私が上記のように、私が背景として使用する画像は約220KのPNGです。
OnPauseで1回、onDestroyで1回、recycleImagesを2回呼び出すのではないですか? – quinestor