我正在使用Android 3.0和3.1。 我在我的應用程序中使用類AndroidHttpClient並執行我使用execute(HttpUriRequest)。來自AndroidHttpClient的進度通知
我在發送數據時想要更新的UI中有一個進度條。 有沒有什麼辦法從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://stackoverflow.com/questions/ 254719/file-upload-with-java-with-progress-bar –