来自AndroidHttpClient的进度通知
我正在使用Android 3.0和3.1。 我在我的应用程序中使用类AndroidHttpClient并执行我使用execute(HttpUriRequest)。来自AndroidHttpClient的进度通知
我在发送数据时想要更新的UI中有一个进度条。 有没有什么办法从AndroidHttpClient获取有关数据发送进度的通知(我猜它不会一次性发送整个缓冲区)?
感谢
为了跟踪数据发送到服务器时的进展,你必须包装正在发送的底层HTTP实体。如果您继承HttpEntityWrapper并覆盖writeTo()
,则可以使用FilterOutputStream对OutputStream进行包装,即将流写入服务器。
我已经包装了OutputStream类,并对writeTo()进行了覆盖。 现在数据被分成几个部分并用for循环发送。 – Yaniv
并且随着每次writeTo()调用的完成,您都可以调用回执行进度的某个侦听器? –
我认为你需要的AsyncTask例如,可能是它会帮助你::
private class xyz extends AsyncTask<Void, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(tranning.this);
@Override
protected void onPreExecute() {
this.dialog.setMessage("Please Wait...");
this.dialog.show();
// put your code which preload with processDialog
}
@Override
protected Void doInBackground(Void... arg0) {
// put you code here
return null;
}
@Override
protected void onPostExecute(final Void unused) {
//if (this.dialog.isShowing()) {
// this.dialog.dismiss();
//}
}
}
,并用它在你的主类::
new xyz().execute();
如果你发现自己在几个问题上粘贴相同的答案,很有可能你应该将一个标记为重复。如果另一个问题被合并到这个问题中,完全相同的答案将会被重复。我并不是说你提供了一个不错的答案,但是在多个地方发布同一个答案时要小心。 –
好吧,我会在我的脑海里嘀咕 –
我明白你的方法,但也许你应该提到'onProgressUpdate' - 在asynctask中的方法,因为那个实际上传达了任务的进度。我无法在你的答案中找到它。但无论如何,这是一个很好的方法。 – katzenhut
您可以使用'AsyncTask'进行此操作。参考此文档:http://developer.android.com/reference/android/os/AsyncTask.html –
可能的重复:http://*.com/questions/ 254719/file-upload-with-java-with-progress-bar –