我的应用程序由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/

10-11 22:26
查看更多