首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在异步任务中使用异步任务

在异步任务中使用异步任务
EN

Stack Overflow用户
提问于 2011-07-18 19:02:47
回答 2查看 4.5K关注 0票数 2

我想使用AsyncTask将图像加载到ListView中。

代码语言:javascript
复制
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中工作。代码中的"model“是一个在运行时通过另一个线程更新的对象。因此,我需要找到一种方法来使用单个异步任务来定期控制对象的状态。我该怎么做?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-18 19:08:43

只有在backGround中运行在backGround线程上,而postExecute和preExecute运行在UI线程本身上。出于同样的原因,您可以在其中显示和取消对话框。

如果你想将单个异步任务用于多种目的,你可以通过传递不同的常量来实现。在.execute()方法中..

我的意思是像这样的东西。

代码语言:javascript
复制
Integer Constant1 = 1;
int Constant2 = 2;

在打电话的时候,

代码语言:javascript
复制
new Background.execute(Constan1 or 2)

在AsyncTask中

代码语言:javascript
复制
doInBackground(Object.. arg0)
{
if(arg0.equals())
{

}
else if(arg0.equals())
{
}
}
票数 4
EN

Stack Overflow用户

发布于 2011-07-18 19:20:47

看看异步任务文档:http://developer.android.com/reference/android/os/AsyncTask.html

代码语言:javascript
复制
private class MyTask extends AsyncTask<Void, Integer, Boolean> {

     protected Boolean doInBackground(Void...) {
         int i = 0;
         while(true){
             publishProgress(i++);
         } 
     }

     protected void onProgressUpdate(Integer... progress) {
         myObject.setState(progress[0]);
     }
 }

您可以使用publishProgress在后台线程和UI线程之间发送消息。这些消息可能包含对象的状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6731919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档