Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:滚动GridView时出现内存不足异常?_Android_Gridview_Out Of Memory_Android Gridview - Fatal编程技术网

Android:滚动GridView时出现内存不足异常?

Android:滚动GridView时出现内存不足异常?,android,gridview,out-of-memory,android-gridview,Android,Gridview,Out Of Memory,Android Gridview,我创建了一个GridView,如下所示 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/too

我创建了一个
GridView
,如下所示

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="application.example.com.fragment_practice.MainActivity"
    tools:showIn="@layout/app_bar_main">

    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/image_grid_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="@dimen/grid_view_width"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:verticalSpacing="@dimen/dp_10" />
</RelativeLayout>
Glide.with(mContext)
     .load(mThumbIds[position])
     .diskCacheStrategy( DiskCacheStrategy.NONE )
     .skipMemoryCache( true )
     .int‌​o(imageView);
下面是
ImageAdapter.java
class

 public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      GridView gridview = (GridView) findViewById(R.id.gridview);
      gridview.setAdapter(new ImageAdapter(this));
   }
}
   public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    // Constructor
    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;

        if (convertView == null) {
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(180, 180));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(15, 15, 15, 15);
        }
        else
        {
            imageView = (ImageView) convertView;
        }
        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    // Keep all Images in array
    public Integer[] mThumbIds = {
            R.drawable.sample_1, R.drawable.sample_2,
            R.drawable.sample_3, R.drawable.sample_4,
            R.drawable.sample_5, R.drawable.sample_6,
            R.drawable.sample_7, R.drawable.sample_8,
            R.drawable.sample_13, R.drawable.sample_9,
            R.drawable.sample_10, R.drawable.sample_11,
            R.drawable.sample_12, R.drawable.sample_13,
            R.drawable.sample_14, R.drawable.sample_16,
            R.drawable.sample_16, R.drawable.sample_17,
            R.drawable.sample_18, R.drawable.sample_19,
            R.drawable.sample_20, R.drawable.sample_21,
            R.drawable.sample_22, R.drawable.sample_23
    };
}
在我滚动之前,一切都是完美的。 以下是我在上下滚动
GridView
3-4次时遇到的例外情况

致命异常:mai
流程:application.example.com.practice,PID:18917 java.lang.OutOfMemoryError:未能分配4915212字节 分配2666656个可用字节和2MB直到OOM 位于dalvik.system.VMRuntime.newNonMovableArray(本机方法) 在android.graphics.BitmapFactory.NativeDecodeset(本机方法) 位于android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:856) 在 decodeResourceStream(BitmapFactory.java:675) 在 android.graphics.drawable.drawable.createFromResourceStream(drawable.java:2230) 在 loadDrawableForCookie(Resources.java:4284) 位于android.content.res.Resources.loadDrawable(Resources.java:4158) 位于android.content.res.Resources.getDrawable(Resources.java:2043) 位于android.content.res.Resources.getDrawable(Resources.java:2025) 位于android.content.Context.getDrawable(Context.java:464) 在android.widget.ImageView.resolveUri(ImageView.java:827)上 在android.widget.ImageView.setImageResource(ImageView.java:434)上 在 application.example.com.fragment\u practice.ImageAdapter.getView(ImageAdapter.java:48) 在android.widget.AbsListView.obtainView(AbsListView.java:2937) 在android.widget.GridView.MakeanddView(GridView.java:1463)中 位于android.widget.GridView.makeRow(GridView.java:366) 在android.widget.GridView.fillUp(GridView.java:407) 位于android.widget.GridView.fillGap(GridView.java:282) 在android.widget.AbsListView.trackMotionScroll(AbsListView.java:7307)上 在android.widget.AbsListView.ScrollIfRequired(AbsListView.java:4400)上 在android.widget.AbsListView.onTouchMove(AbsListView.java:5796)上 在android.widget.AbsListView.onTouchEvent(AbsListView.java:5624)上 在android.view.view.dispatchTouchEvent上(view.java:10011) 在 android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2833) 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2504) 在 android.widget.AbsListView.dispatchTouchEvent(AbsListView.java:5561) 在 android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2844) 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519) 在 android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2844) 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519) 在 android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2844) 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2519) 在 android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2844)
Glide.with(mContext).load(mThumbIds[position]).placeholder(R.drawable.user_placeholder).into(imageView);
dexOptions {
    incremental true
    javaMaxHeapSize "4g"
    jumboMode = true
}
dependencies {
  compile 'com.github.bumptech.glide:glide:3.7.0'
}
Glide.with(mContext)
     .load(mThumbIds[position])
     .diskCacheStrategy( DiskCacheStrategy.NONE )
     .skipMemoryCache( true )
     .int‌​o(imageView);