我想通過一個按鈕點擊http發送一些數據,每次用戶點擊按鈕時應該將一些數據添加到隊列中,然後將通過http發送,在獲得響應後,我想從隊列中移除它,然後對隊列中的下一個項目執行相同操作。在同步任務中調用HTTP多次在android
我知道如何將項目添加到隊列中,並且我嘗試了異步任務來調用http。 問題如果用戶在按鈕上多次點擊,我怎麼才能確保隊列中的下一個項目不會被調用,直到第一個http完成。 而且如果應用程序在後臺也需要完成操作。
這是異步代碼在doInBackground方法:
@Override
protected Boolean doInBackground(Void... params) {
try {
msgResponseIS = getInputStream(generatedLink);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (msgResponseIS != null){
BufferedReader r = new BufferedReader(new InputStreamReader(
msgResponseIS));
StringBuilder total = new StringBuilder();
String line;
try {
while ((line = r.readLine()) != null) {
total.append(line);
}
setResponseValue(total.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;}
else
return false;
}
禁用按鈕仍然會得到迴應.. –
我不能這樣做,根據我的應用程序邏輯,用戶可以多次點擊按鈕發送數據。但請求應該添加到隊列中。並且請求的數目是未定義的。 – Reham
運行進度條仍然可以得到響應。當你得到迴應時,再次開始活動。 –