嗨让我们说当我将活动 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)
任何机构都可以解决我的问题:(