【发布时间】:2017-10-01 01:18:52
【问题描述】:
我是一个相当新的程序员,所以任何建议都将不胜感激。我有一个类,每次调用它时都会在循环中运行 AsyncTask。 AsyncTask 看起来像这样:
public class LoadImageTask extends AsyncTask<Void, Void, Void> {
Context c;
ViewHolder vh;
public Bitmap bm;
ViewGroup container;
LinearLayout layout;
public LoadImageTask(Context c, ViewHolder vh, ViewGroup container,
LinearLayout linlay) {
this.vh = vh;
this.c = c;
this.container = container;
this.layout = linlay;
}
protected Void doInBackground(Void... params) {
Tools tools = new Tools();
this.bm = tools.getAlbumart(this.c, vh.albumID);
return null;
}
protected void onPostExecute(Void param) {
vh.iv.setImageBitmap(this.bm);
this.layout.addView(this.container);
if (bm!=null) {
bm.recycle();
}
}
}
ViewHolder vh - 包含 2 个文本视图和一个 Imageview 的类
ViewGroup 容器 - 用于扩充我所做的 xml 设计的容器(带有 2 个文本视图和一个 ImageView)
LinearLayout linlay - 我将容器添加到的滚动视图布局(根据我在该视图中想要的元素数量来扩展它)
我创建的位图使用了太多内存,所以我想回收它们,但是每次我在将容器添加到布局后尝试回收它们时,它都会说我正在尝试使用回收的位图(当我在将容器添加到屏幕后清楚地调用回收时)......我在这一点上被难住了。任何帮助都会很好。
【问题讨论】:
标签: android android-layout bitmap android-asynctask