アプリケーションに奇妙な問題があります。
AsyncTasks を使用して 2 つまたは 3 つのものを並行してフェッチするアクティビティがあります。
単純に次のことをすると
new getMessages().execute("someID");
new getNotifications().execute("someID");
両方の AsyncTasks には次のようなコードがあります。
(それぞれのメソッドで要求される URL が異なることを除いて、どちらも同じです)。
注意: このコードを少し変更して、http 要求で送信された余分なパラメーターなどの不要な余分なものを削除しました。
// in the other Async task "notifications" is changed with "messages"
public class getNotifications extends AsyncTask<String, Void, String> {
ProgressDialog dialog;
Integer verified = 0;
protected void onPreExecute() {
}
@Override
protected String doInBackground(String... args) {
// getRequestsCount just perfomrs http request and grabs JSON data
String result = getRequestsCount(args[0] , "notifications");
return result;
}
protected void onPostExecute(String result) {
// This is just a method that handles the result
// When I log result I found that results are exchanged.
displayResults(result);
}
}
public String getRequestsCount(String id, String type){
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new
HttpPost(GlobalSettings.apiURL + "/getcount/" + type );
Log.i("will contact",GlobalSettings.apiURL + "/getcount/" + type);
HttpResponse response = httpclient.execute(httppost);
BufferedReader reader = new BufferedReader(new InputStreamReader( response.getEntity().getContent(), "UTF-8"));
String responseMessage = reader.readLine().toString().trim();
// Response is always 1 line of JSON data
Log.i("Response for "+type,responseMessage);
return responseMessage;
}
今私の問題は、時々結果が交換されることです。
つまり、getMessages は getNotifications から要求された JSON データを受信し、その逆も同様です。