Android 我的应用占用大量内存(在导航项之间移动时清除缓存)

Android 我的应用占用大量内存(在导航项之间移动时清除缓存),android,ram,android-glide,clear-cache,Android,Ram,Android Glide,Clear Cache,我正在尝试创建一个包含不同类别的应用程序,每个类别都包含一系列图像(所有图像都是从它们的链接下载的),我使用Glide库,我做了所有这些,但内存内存有问题我的应用程序占用了大量内存(该值因设备而异) 原因是当我在类别之间移动时,图像被加载并存储在缓存中,我如何解决这个问题 这是fragments.java中的一个 public class Art extends Fragment { GridView myGrid; CategoryAdapter adapter; public Art()

我正在尝试创建一个包含不同类别的应用程序,每个类别都包含一系列图像(所有图像都是从它们的链接下载的),我使用Glide库,我做了所有这些,但内存内存有问题我的应用程序占用了大量内存(该值因设备而异) 原因是当我在类别之间移动时,图像被加载并存储在缓存中,我如何解决这个问题

这是fragments.java中的一个

public class Art extends Fragment {
GridView myGrid;
CategoryAdapter adapter;

public Art() {
    // Required empty public constructor
}

@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup   container, Bundle savedInstanceState) {
    final ArrayList<String> movieList =  new ArrayList<>();
    /*Source Art*/
    movieList.add("http://i.imgur.com/INlyb2w.jpg");
    movieList.add("http://i.imgur.com/ZvvBaq8.jpg");
    /*****/

    View v =  inflater.inflate(R.layout.fragment_art, container, false);
    myGrid= (GridView) v.findViewById(R.id.gridViewCategory);
    adapter =new CategoryAdapter(getActivity(),movieList);
    myGrid.setAdapter(adapter);
    myGrid.setOnItemClickListener(new    android.widget.AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int   position, long id) {
                    Intent popup = new Intent(getActivity(), Pop.class);
                    popup.putExtra("WallpaperURL", movieList.get(position));
                    startActivity(popup);
          }
       });
      return v;
   }
}
 class CategoryAdapter extends BaseAdapter {
  private Context context;
  private ArrayList<String> imageId= new ArrayList<>();
  CategoryAdapter(Context context,ArrayList<String> imageId){
    this.context=context;
    this.imageId=imageId;
 }
 @Override
 public int getCount() {
    return imageId.size();
 }

 @Override
public Object getItem(int position) {
    return imageId.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}
private class ViewHolder{
    ImageView CategoryImage;
    ViewHolder(View view){
        CategoryImage = (ImageView) view.findViewById(R.id.cat_imageView);
    }
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row=convertView;
    ViewHolder holder;
    if(row == null){
        LayoutInflater inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row=inflater.inflate(R.layout.picture_item,parent,false);
        holder=new ViewHolder(row);
        row.setTag(holder);
    }
    else{
        holder=(ViewHolder) row.getTag();
    }
    Glide.with(context).load(imageId.get(position)).placeholder(R.drawable.arrw).into(holder.CategoryImage);
    return row;
}
公共类艺术扩展片段{
GridView-myGrid;
类别适配器;
公共艺术(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(最终布局充气机、最终视图组容器、捆绑包保存状态){
最终ArrayList movieList=新ArrayList();
/*源艺术*/
电影列表。添加(“http://i.imgur.com/INlyb2w.jpg");
电影列表。添加(“http://i.imgur.com/ZvvBaq8.jpg");
/*****/
视图v=充气机。充气(R.layout.fragment_艺术,容器,假);
myGrid=(GridView)v.findViewById(R.id.gridViewCategory);
适配器=新类别适配器(getActivity(),movieList);
设置适配器(适配器);
myGrid.setOnItemClickListener(新的android.widget.AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意向弹出=新意向(getActivity(),Pop.class);
puptextra(“wallperurl”,movieList.get(position));
星触觉(弹出);
}
});
返回v;
}
}
类CategoryAdapter扩展BaseAdapter{
私人语境;
私有ArrayList imageId=新ArrayList();
CategoryAdapter(上下文,ArrayList imageId){
this.context=context;
this.imageId=imageId;
}
@凌驾
public int getCount(){
返回imageId.size();
}
@凌驾
公共对象getItem(int位置){
返回imageId.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
私有类视窗持有者{
图像视图类别图像;
视图保持器(视图){
CategoryImage=(ImageView)view.findViewById(R.id.cat_ImageView);
}
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
视窗座;
if(行==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
行=充气机。充气(右布局。图片项目,父项,假);
支架=新的视图支架(行);
row.setTag(支架);
}
否则{
holder=(ViewHolder)row.getTag();
}
Glide.with(context).load(imageId.get(position)).placeholder(R.drawable.arrw).into(holder.CategoryImage);
返回行;
}

}

是否缩小图像的比例?使用web上的未缩放图像可能会由于内存不足而导致应用程序崩溃。首先,我不是java专家,但通常使用大型图像集会导致内存问题。基本上有两个选项:1不在内存中缓存图像,这将减少应用程序的可用性性能。第二,2)在处理列表中的图像时,或一般情况下,一个典型的问题是,尤其是下载的大图像,其分辨率大于屏幕分辨率。最好将它们缩小到您希望它们显示的分辨率(例如拇指)。多少是“很多”?不过,您的问题似乎更具体:|