我的应用程序由4个布局文件组成,每个布局使用不同的图像作为背景。我设法加载布局1和2,但是转到布局3后,出现错误“由:java.lang.OutOfMemoryError引起”
我怀疑这是因为布局1和布局2仍在内存中。有什么办法可以在每次使用新布局时清理内存,以免内存用完吗?谢谢。
附言:我使用的是Android Studio。
P.S 2我不确定这是否会发生任何变化,但以防万一,这是我进行不同活动/布局的方式:
previouspage.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), secondPage.class);
startActivity(intent);
}
}
);
nextpage.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), FourthPage.class);
startActivity(intent);
}
}
);
最佳答案
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), secondPage.class);
startActivity(intent);
yourExistingActivity.finish(); // This will free the memory
}
请注意,您从中调用finish()方法的活动已销毁,所有资源都排队等待垃圾回收,并且此活动使用的所有内存将在下一个GC周期中释放。
如果您真的想尽快撤消内存,请重写您活动的onDestroy方法:
@Override
public void onDestroy() {
super.onDestroy();
Runtime.getRuntime().gc();
}
关于java - 如何清除以前布局的图片中的内存?转到不同的布局/Activity 时如何清理内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36928759/