我从互联网下载多张图片并将其存储在内存中。现在我想在GridView中加载这些图像,这完全发生,但过了一段时间后,我在日志文件中收到Garbage Collector
消息。
我用谷歌搜索它,我发现我的应用程序可能会在应用程序堆大小中加载更多的位图到内存中,从而导致问题。
我的适配器: -
public class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.size();
}
@Override
public String getItem(int arg0) {
// TODO Auto-generated method stub
return data.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2)
{
if(arg1==null)
{
LayoutInflater inflater = (LayoutInflater) itemgridsub.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arg1 = inflater.inflate(R.layout.gridsubitems, arg2,false);
}
TextView user = (TextView)arg1.findViewById(R.id.gridsub_tv);
//setting comics sans as textview's default font
Typeface type = Typeface.createFromAsset(getAssets(), "fonts/comic.ttf");
user.setTypeface(type);
user.setText(data.get(arg0).substring(3));
ImageView img =(ImageView)arg1.findViewById(R.id.gridsub_iv);
//setting the sdim of imageview
img.getLayoutParams().height=(int) (height/dpi);
img.requestLayout();
Bitmap img1 = loadimage(path+arg0+".jpg");
//img.setImageBitmap(finalimage);
img.setImageBitmap(img1);
return arg1;
}
}
使用的变量: -
data
是一个全局 ArrayList<String>
变量。height
全球 float
。path
全球 String
使用的方法: -
public Bitmap loadimage(String path)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
return BitmapFactory.decodeFile(path, options);
}
我的活动的作用: - 下载多个图像,将它们存储到内部存储器中。加载它们,调整它们并替换原始图像。现在加载它们以适应GridView的imageview。
我想要的是什么: - 请告诉我装载gridview的适配器是否正确。是否真的回收视图并在超出范围时删除图像?或者指出代码的任何改进以进行适当的内存管理。
感谢。