我想使用 AsyncTask 将图像加载到 ListView。
private class LoadImageTask extends AsyncTask<HashMap<String,Bitmap>,Void,Bitmap>{
@SuppressWarnings("unchecked")
@Override
protected void onPostExecute(Bitmap result) {
if(model.getIconCache().get(cellIcon)!=null){
icon.setImageBitmap(model.getIconCache().get(cellIcon));
}else{
new LoadImageTask().execute(model.getIconCache());
}
}
@Override
protected Bitmap doInBackground(HashMap<String, Bitmap>... params) {
//return model.getIconCache().get(cellIcon);
return null;
}
}
好吧,我知道这不是情感代码。然而,它运行良好,但需要大量内存分配。当阅读有关AsyncTask的文档时,它说Asynctask只能从UI线程调用,它怎么能让它在自身内部使用呢?当然,我想让我的代码在单个 AsyncTask 中工作。代码中的“模型”是一个在运行时通过另一个线程更新的对象。因此,我需要找到一种方法来使用单个异步任务来定期控制对象的状态。我怎么做?谢谢
最佳答案
仅在 backGround 中在 backGround 线程上运行,postExecute 和 preExecute 在 UI 线程本身上运行。出于同样的原因,您可以在其中显示和关闭对话框。
如果您想将单个 Asynctask 用于多种目的,您可以通过在 .execute()
方法中传递不同的常量来进行操作..
我的意思是这样的。
Integer Constant1 = 1;
int Constant2 = 2;
打电话时,,
new Background.execute(Constan1 or 2)
和 AsyncTask 中
doInBackground(Object.. arg0)
{
if(arg0.equals())
{
}
else if(arg0.equals())
{
}
}
关于android - 在 asynctask 中使用 asynctask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6731919/