我有一个情况,我有2个按钮。 在每个按钮上单击,我正在调用一个Web服务,它返回一些消息(例如,它在按钮1单击时返回“按钮1单击”,在按钮2单击时返回“按钮2单击”)。
在我的网络方法中,我已经为按钮2的响应定义了3秒的延迟。
现在,当我单击按钮1时,我立即收到返回消息(“按钮1单击”)然后当我单击按钮2时,我得到返回消息(“按钮2单击”)3秒后,这是细
如果我单击按钮2然后单击按钮1,那么除非按钮2的响应消息未到来(即3秒后),否则按钮1响应消息也会延迟。
我想删除此延迟,即只要点击按钮1,就应该收到响应消息。
请建议如何实现这一目标。
这是我的内心阶层:
private class UseDataForCommunication extends AsyncTask<String, Void, Void> {
String receivedContent = "";
String error = "";
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(String... params) {
/************ Make Post Call To Web Server ***********/
BufferedReader reader = null;
// Send data
try {
// Defined URL where to send data
URL url = new URL(params[0]+params[1]);
// Send POST data request
URLConnection conn = url.openConnection();
// Get the server response
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while ((line = reader.readLine()) != null) {
// Append server response in string
sb.append(line + " ");
}
// Append Server Response To Content String
receivedContent = sb.toString();
} catch (Exception ex) {
error = ex.getMessage();
} finally {
try {
reader.close();
} catch (Exception ex) {
}
}
/*****************************************************/
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
try {
JSONObject jsonObject = new JSONObject(receivedContent);
String parsedResponse = jsonObject.optString("respone");
receivedMessageViaDataConnection(parsedResponse);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
这是我从每个按钮点击的电话:
new UseDataForCommunication().execute(AppConstants.TRANSMIT_URL,message);
答案 0 :(得分:1)
您可以使用executeOnExecutor
执行多个AsyncTask if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {
new MyAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
new MyAsyncTask().execute();
}
了解更多check this