在同步期间,我必须清除在线流,然后使用HTTP请求逐行加载所有数据。每条数据线一个请求。重要的是,http请求按照它们的创建顺序运行。
主要课程:
//Sync cloud stream
HttpAsyncTask hats = new HttpAsyncTask();
hats.execute(app.getProductCartStream().getClearUri());
for(int i = 0 ; i<app.getProductCartData().size();i++){
ArrayList<String> values = new ArrayList<String>();
values.add(app.getProductCartData().get(i));
String insertUri = app.getProductCartStream().getInsertUri(values);
HttpAsyncTask hat = new HttpAsyncTask();
hat.execute(insertUri);
}
私人课程:
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urls[0]);
HttpResponse httpResponse = httpClient.execute(httpGet);
BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null; ) {
builder.append(line).append("\n");
}
return builder.toString();
}catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();;
}
return null;
}
@Override
protected void onPostExecute(String result) {
if(result!=null){
Toast.makeText(getApplicationContext(), "Saved", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(getApplicationContext(), "Not able to save data", Toast.LENGTH_LONG).show();
}
}
}
问题1:请求是否按创建顺序执行?即,第一个http请求首先清除流是非常重要的。
问题2:我弃用的所有HTTP内容。现在这样做的正确方法是什么?
问题3:为什么我不能在application.onDestroy()中激活同步代码?
答案 0 :(得分:1)
Ans.1: - 在新的AsyncTask()。execute()中,所有请求都按顺序处理。对于并行执行,我们调用另一种方法。
Ans.2:我弃用的HTTP内容,比如DefaultHttpClient,即使在Android M中它们也不存在,因此避免使用它们并使用更好的方法:
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
...... bla bla bla。
但是,赘肉并不代表你的方法不起作用。
答案3:我无法回答您的问题。
由于