Java.Lang.OutOfMemoryError:仅发生在一个布局而不发生在其他布局上

时间:2017-12-14 08:17:27

标签: java android out-of-memory

正如标题所述,我的问题与错误有关。 我设置了3个使用相同背景的布局,但只有1个布局不断产生此错误。设置背景时错误开始了。没有背景,它可以毫无问题地运行。但我要解决的问题是如何解决内存不足错误以及为什么这种布局会产生错误,而另外两种则不然。代码几乎相同。

这是产生错误的布局。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/seabg">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:srcCompat="@drawable/f1"
    android:id="@+id/imageView"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:text="CLICK"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="177dp"
    android:id="@+id/btnf"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />
<ImageView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:srcCompat="@drawable/ferry"
    android:id="@+id/imageView1"
    android:layout_marginBottom="36dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
</RelativeLayout>

同时,这是一个可以正常运行而没有错误的那个。 (它应该是两个布局,节省一些空间,因为代码看起来完全相同,只有第一个ImageView不同。)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/seabg">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:srcCompat="@drawable/y1"
    android:id="@+id/imageView"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:text="CLICK"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="177dp"
    android:id="@+id/btny"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<ImageView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:srcCompat="@drawable/yacht"
    android:id="@+id/imageView1"
    android:layout_marginBottom="36dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />
</RelativeLayout>

编辑:这是我对产生错误的活动。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_f);

    final MediaPlayer fSound = MediaPlayer.create(this, R.raw.ferry);
    btnf = (Button) findViewById(R.id.btnf);
    btnf.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            fSound.start();
        }
    });

}

这是可以毫无问题地运行的那个。

    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_y);

    final MediaPlayer ySound = MediaPlayer.create(this, R.raw.yacht);
    btny = (Button) findViewById(R.id.btny);
    btny.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            ySound.start();
        }
    });

}

1 个答案:

答案 0 :(得分:0)

尝试删除imageView或将图像src更改为较低的分辨率!这可能会解决你的问题!