2011-12-28 46 views
-1

你好,我想在后台线程中执行一些冗长的操作和在平均时间向用户显示一个“水平进度条”,并保持更新此作为后台操作发生。我知道我可以用的AsyncTask实现这一点,但到现在我只用progressdialog,它是与简单的多。请帮忙 。的AsyncTask

protected HttpResponse doInBackground(Void... params) 
    { 
     Client.getParams().setIntParameter("http.connection.timeout",5000); 
     try 
     { 

      return Client.execute(loginPost); 
     } 
     catch(Exception e) 
     { 
      return null; 
     } 
    } 

现在,这是我的doInBackground()方法,我怎么能真正知道正在进行的操作的状态,以便能够更新我的进度

+0

如果不知道'Client'类的完整定义,这是不太可能任何人都可以帮助这个。任何答案都可能涉及修改'客户端'而不是你所显示的代码。你的问题也完全不是关于AsyncTask的。 – 2011-12-28 18:13:10

回答

1

随着AsyncTask,更新进度是不是要复杂得多。移动冗长的操作你的AsyncTask.doInBackground,无论你目前正在打电话pbar.setProgress(percent_done)覆盖,通话publishProgress(percent_done),并实现AsyncTask.onProgressUpdate(Integer... values)

pbar.setProgress(values[0]); 
+0

好吧,我得到它,但事情是一个progressdialog我不;吨真的有什么更新用。我只是关闭onPostExecute()对话框。基本上我将一些内容发布到数据库并在doInackground方法中获得http响应。所以我不能真正传递一个Integer值到onProgressUpdate。 – Saiesh 2011-12-28 07:12:54

+0

的DoInBackground()方法仅具有一个线,其返回一个HttpResponse对象,并在过程中还执行后。那么我将如何知道进展? – Saiesh 2011-12-28 07:13:51

+0

如果你只需要知道当后台任务完成后,'AsyncTask.onPostExecute(结果)'被当这种情况发生调用。您可以在执行该方法时解除对话框。 如果你真的问如何从一些代码,你没有提到获得最新进展,那么你将不得不至少说你需要从进度更新哪些代码。可能无法确定数据库更新有多远。 – 2011-12-28 07:23:32