1

そのため、リクエストをサーバーに送信してレスポンスを取得するコードがあります。応答は、サーバーに送信するパラメーターのセットによって異なります。しかし、何らかの理由で同じ結果が得られました。コードは次のとおりですsendDashboardRequest。2 つの異なるパラメーターのセット を呼び出します。

 LinkedHashMap<String, Object> serverParameters = new LinkedHashMap<String, Object>();
serverParameters.put("user_id", result.get("user_id"));
serverParameters.put("limit", Integer.valueOf(1000).toString());
serverParameters.put("type", Integer.valueOf(1).toString());
sendDashboardRequest(serverParameters);
 serverParameters.put("type", Integer.valueOf(2).toString());
sendDashboardRequest(serverParameters);//Executes only this AsyncTask twice!

sendDashboardRequest新しい AsyncTasks を開始するメソッドのコードは次のとおりです。

public void sendDashboardRequest(LinkedHashMap<String, Object> params) {

    new AsyncTask<LinkedHashMap<String, Object>, Void, LinkedHashMap<String, Object>>()
    {    
         NetworkOp lowLevelOps = new NetworkOp();
        @Override
        protected LinkedHashMap<String, Object> doInBackground (LinkedHashMap<String, Object>... params)    
       { 

        return  lowLevelOps.executeCommand(DASHBOARD_COMMAND, params[0]);
        }
        protected void onPostExecute(LinkedHashMap<String, Object> result)
        {   
                        //And here I gave the same result!But parameters which I send to the server are different!
        }
    }.execute(params);
} 

最も興味深いのは、同じ本体を持つ 2 つの異なるメソッドを作成し、それぞれを異なるパラメーター セットに対して呼び出すと、すべてがうまく機能し、2 つの異なる AsyncTasks が開始されることです。

4

1 に答える 1

4

You are sending the same LinkedHashMap in both requests. Since the requests are serviced in a background thread, the timing will be unpredictable and you can't guarantee that the background thread for the first request will execute before you issue the second request. In this case, by chance, the modified value in the second request is already in the map by the time the first request gets executed.

You should use a different map for each request, or else change sendDashboardRequest so that it copies the data it needs rather than relying on the passed-in map remaining constant.

于 2013-03-18T13:22:18.760 に答える