如何清除以前版面图片的内存?如何在进入不同的布局/活动时清除内存?

问题描述:

我的应用程序由4个布局文件组成,每个布局使用不同的图像作为背景。我设法加载布局1和2,但在布局3后我得到错误“由java.lang.OutOfMemoryError引起”如何清除以前版面图片的内存?如何在进入不同的布局/活动时清除内存?

我怀疑这是因为布局1和布局2仍在内存中。任何方式有没有办法清理内存,每次我去一个新的布局,所以我没有用完内存?谢谢。

P.S我使用Android Studio。

PS 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 

} 

注意的是,活动你调用结束()方法被销毁并且全部其资源是排队用于垃圾收集,并且此活动使用的所有内存将在下一个GC循环期间释放。

如果你真的想尽快撤销内存,重写你的活动的onDestroy方法:

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