如何从以前布局的图片中清除记忆?如何在进入不同的布局/活动时清理内存?

时间:2016-04-29 02:51:34

标签: java android android-layout android-studio out-of-memory

我的应用程序包含4个布局文件,每个布局使用不同的图像作为背景。我设法加载布局1和2,但在我转到布局3后,我收到错误“引起:java.lang.OutOfMemoryError”

我怀疑是因为布局1和布局2仍在内存中。有没有办法在每次进入新布局时清理内存,这样我就不会耗尽内存?感谢。

P.S我使用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);
                    }
                }
        );

1 个答案:

答案 0 :(得分:3)

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()方法的活动已被销毁, ALL 其资源排队用于垃圾回收,以及所使用的所有内存在下一个GC周期期间,此活动将被释放。

如果你真的想要尽快撤销内存 ,请覆盖你的活动'onDestroy方法:

@Override
public void onDestroy() {
    super.onDestroy();
    Runtime.getRuntime().gc();      
}