Android检查post请求的速度
我试图检查Post请求执行的速度。我正在异步任务中执行请求 这就是我目前检查执行时间的方式Android检查post请求的速度,android,android-asynctask,Android,Android Asynctask,我试图检查Post请求执行的速度。我正在异步任务中执行请求 这就是我目前检查执行时间的方式 long start = System.nanoTime(); new POSTTask().execute(); long end = System.nanoTime() - start; 我不确定这段时间是否是Post请求的实际时间。在AsyncTask中,我正在做的唯一事情是 try {
long start = System.nanoTime();
new POSTTask().execute();
long end = System.nanoTime() - start;
我不确定这段时间是否是Post请求的实际时间。在AsyncTask中,我正在做的唯一事情是
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
List<NameValuePair> postParameters = new ArrayList<>();
postParameters.add(new BasicNameValuePair("test", "tets1"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
request.setEntity(formEntity);
HttpResponse response = httpClient.execute(request);
result = EntityUtils.toString(response.getEntity());
Log.i("Result", result);
} catch (IOException e) {
e.printStackTrace();
}
我这样做是对的还是错的?不,现在不是实际时间。您正试图在主线程上获取执行时间,但您的post查询正在后台的另一个线程中运行 像这样使用它
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(url);
List<NameValuePair> postParameters = new ArrayList<>();
postParameters.add(new BasicNameValuePair("test", "tets1"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
request.setEntity(formEntity);
long start = System.nanoTime();
HttpResponse response = httpClient.execute(request);
long end = System.nanoTime() - start;
// Print value of end here
result = EntityUtils.toString(response.getEntity());
Log.i("Result", result);
} catch (IOException e) {
e.printStackTrace();
}
不,这是错误的。AsyncTask上的execute方法在执行请求之前立即返回
如果您将计时代码移动到AsyncTask中,特别是将它放在这一行的周围
HttpResponse response = httpClient.execute(request);
您将获得实际时间。这是错误的,因为这些行没有按顺序执行
new POSTTask().execute();
开始一个新的线程,这意味着你的两个时间戳将非常接近,就像毫秒间隔一样,这是不准确的
你应该做什么?所有的时间都在你的背景中完美,这很有效。我会在8分钟后马上给马克打电话。很高兴我能帮上忙。谢谢!!:Ddo您现在知道async在AsyncTask中意味着什么吗?