Во время синхронизации я должен очистить онлайн-поток, а затем загрузить все данные по строкам с помощью HTTP-запросов. Один запрос на строку данных. Важно, чтобы HTTP-запросы выполнялись в последовательности, которую они создали.Mutliple http request android
Основной класс:
//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: Будет ли запросы выполняться в порядке их создания? I. Очень важно, чтобы первый запрос HTTP очистил поток.
Вопрос 2: Все материалы HTTP, которые я устарел. Каков правильный способ сделать это сейчас?
Вопрос 3: Почему я не могу запустить синхронизированный код в application.onDestroy()?
Очень хорошо, спасибо! :) Вопрос 3: запуск моего кода нажатием кнопки работает отлично. Но я попытался добавить код в обратный вызов onTerminate в моем файле приложения. \t @Override \t public void onTerminate() { – Snovva1
Happy to help !!! – Androider