java - 如何从以前布局的图片中清除内存?转到不同的布局/Activity 时如何清理内存?

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

我的应用由 4 个布局文件组成,每个布局使用不同的图像作为背景。我设法加载了布局 1 和布局 2,但在我转到布局 3 后出现错误“Caused by: java.lang.OutOfMemoryError”

我怀疑是因为layout 1和layout 2还在内存中。每次我进入新布局时,有什么办法可以清理内存,这样我就不会用完内存吗?谢谢。

P.S 我使用 Android Studio。

P.S 2 我不确定这是否会改变任何东西,但以防万一这是我进入不同 Activity/布局的方式:

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

如果你真的想尽快撤销内存,覆盖你的activity的onDestroy方法:

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

关于java - 如何从以前布局的图片中清除内存?转到不同的布局/Activity 时如何清理内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36928759/

相关文章:

java - JFormattedTextField 与 MaskFormatter

Java 创建列表问题 List<Type> myList = new ArrayList<Type>();

java - Android 数据绑定(bind)错误示例

java - Java Spring 中的延迟加载异常

java - Apache Camel 如何从路由动态添加/删除端点

java - Android 工具栏不显示

java - Eclipse->File->New-Project中没有Android项目类型

android - Android Activity 的三角形按钮

android - 为什么我按下按钮时会收到此错误消息?

android - 如何更改 ExpandableListView 组指示器位置?