应用程序在添加图像视图时崩溃

时间:2016-03-18 05:48:08

标签: android performance android-layout imageview

我的应用程序可以很好地处理11个图像视图。但是在添加1个图像视图后,应用程序崩溃了。我在堆栈溢出本身找到了类似的问题答案,但无法找到我的确切解决方案。

主要活动:

    package com.trendsetter.vyshnav.eatutor;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;


    public class BreakfastActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_breakfast);
}

    }

XML文件:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
android:fillViewport="true">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t1"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i1" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d1a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d1b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t2"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:paddingTop="10dp"
        android:textColor="#006600"
        android:paddingBottom="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i2" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d2"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />



    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t3"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i3" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d3a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d3b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t4"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i4" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d4a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d4b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t5"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i5" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d5a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d5b"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t6"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i6" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d6a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d6b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t7"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i7" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d7a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d7b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t8"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i8" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d8a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d8b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t9"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i9" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d9a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d9b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t10"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i10" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d10a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d10b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/t11"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#006600"
        android:paddingBottom="10dp"
        android:paddingTop="10dp" />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:scaleType="centerCrop"
        android:src="@drawable/i11" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d11a"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingTop="10dp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/d11b"
        android:textAppearance="?android:attr/textAppearanceMedium" />


</LinearLayout>
    </ScrollView>

logcat的:

    Caused by: java.lang.OutOfMemoryError: Failed to allocate a 9815052 byte allocation with 4194208 free bytes and 5MB until OOM

3 个答案:

答案 0 :(得分:0)

添加AndroidManifest.xml文件并解决问题:

<application
             ....
             ....
             android:largeHeap="true"

 </application>

答案 1 :(得分:0)

您的Scrollview似乎是多组3个TextView和一个ImageView的集合。

我建议使用3个字符串值定义一个自定义对象,并使用一个int值来保存图像的R.drawable整数值。

然后,您可以将自定义XML行定义为单个对象。并且&#34;绑定&#34;通过ListView + ArrayAdapter或RecyclerView将每个对象添加到视图中。

为了修复内存不足错误,您应该使用像Picasso或Glide这样的图像加载库将前面提到的整数资源ID加载到ImageView中,而不是将完整的原始图像加载到内存中。

答案 2 :(得分:0)

这种情况正在发生,因为您的图像大小大于2Mb,因此请尝试压缩baseAdapter中的图像:     你可以按照这个链接压缩图像:     How to compress image size?