こんにちは私がアクティビティAをアクティビティBに呼び出すときを言いましょう
以下は私のコードになります
Intent i = new Intent(TemplateList.this, PictureEditor.class);
Bundle b = new Bundle();
b.putString("Key", "2");
b.putString("Index", imagepathString);
i.putExtras(b);
v.getContext().startActivity(i);
System.gc();
Runtime.getRuntime().gc();
finish();
アクティビティAのために、非常に多くのオブジェクト(非常に多くの画像)がロードされているため、System.gc()によってすべてのオブジェクトをクリアしています。Runtime.getRuntime()。gc(); クリアされ、アクティビティも破棄されるため、オブジェクトが割り当てられたままになることはありません:)
アクティビティBからアクティビティAに電話します
btnTemplate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(PictureEditor.this, TemplateList.class));
dg.dismiss();
if (bmp != null) {
bmp.recycle();
bmp = null;
}
System.gc();
Runtime.getRuntime().gc();
finish();
}
});
//ここでも、アクティビティを呼び出しSystem.gc
て破棄しますが、開始する場合は、取得するよりもRuntime.getRuntime.gc
理由がわかりませんactivity A
以下のエラー
12-19 12:44:48.769: E/AndroidRuntime(7539): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
12-19 12:44:48.769: E/AndroidRuntime(7539): at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
12-19 12:44:48.769: E/AndroidRuntime(7539): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:405)
12-19 12:44:48.769: E/AndroidRuntime(7539): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:418)
12-19 12:44:48.769: E/AndroidRuntime(7539): at com.redwood.PictureEditor.get_bitmap(PictureEditor.java:257)
12-19 12:44:48.769: E/AndroidRuntime(7539): at com.redwood.PictureEditor$5.run(PictureEditor.java:218)
12-19 12:44:48.769: E/AndroidRuntime(7539): at java.lang.Thread.run(Thread.java:1019)
どんな体でも私の問題を解決できますか:(