Приложение для Android запускает аутентифицированный веб-сервис API для загрузки и синхронизации записей с сервера на основе типа данных.Постоянное соединение для повторных вызовов API
Например:
приложение вызывает API в цикле для различных типов контента (Commerce, Science, Arts
).
Теперь для каждого типа контента приложение поддерживает last sync date
так, чтобы оно могло синхронизировать данные только после этой даты, в течение последнего месяца.
вызов API, выглядит следующим образом:
private void loadData(){
String apiUrl = "";
String[] classArray = { "Commerce", "Science", "Arts" };
try{
for(int classIndex = 0; classIndex < classArray.length; classIndex++){
apiUrl = "http://www.myserver.com/datatype?class="+classArray[classIndex]+"&syncDate="+lastSyncDate;
String responseStr = getSyncData(apiUrl);
// Code to parse the JSON data and store it in SqliteDB.
}
}catch (Exception e) {
e.printStackTrace();
}
}
private String getSyncData(String webservice){
String line = "", jsonString = "";
try{
URL url = new URL(webservice);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY); //using proxy may increase latency
conn.setInstanceFollowRedirects(false);
String userName = "[email protected]", password = "abc123";
String base64EncodedCredentials = Base64.encodeToString((userName
+ ":" + password).getBytes(), Base64.URL_SAFE
| Base64.NO_WRAP);
conn.setRequestProperty("Authorization", "basic "+ base64EncodedCredentials);
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = rd.readLine()) != null) {
// Process line...
return line;
}
rd.close();
}
}catch (Exception e) {
e.printStackTrace();
}
return jsonString;
}
Этот метод возвращает getSyncData()
JSON
ответ, который разбирается и хранящуюся в SqliteDb
.
Этот код работает нормально. Но есть небольшая проблема с производительностью при наличии большего количества типов контента в classArray
, и каждый класс имеет большой набор данных.
Мой вопрос:
Чтобы улучшить общую производительность этого процесса, я могу открыть соединение к www.myserver.com
и передавать параметры с API вызова в цикле, чтобы прекратить создавать соединение снова и снова для каждого содержания тип.
Здесь я использую HttpURLConnection
для вызовов API, но могу использовать любую другую технику в java.
Основная цель состоит в том, чтобы сделать соединение постоянным, чтобы приложение не создавало его снова и снова для каждого вызова, потому что для каждого приложения-приложения создается отдельное соединение, которое потребляет больше времени.
http не является постоянным протоколом – njzk2
@ njzk2 - Я не застрял на http, могу использовать любую лучшую технику в java для улучшения производительности. –
есть система (я не помню, что именно), чтобы отправить несколько запросов сразу по многократному запросу – njzk2