Я пытаюсь сделать сетевую часть моего приложения более стабильной, более оптимальной, так как я получил некоторые проблемы, заявив, что для выполнения запросов требуется слишком много времени. Прежде чем поделиться части моего кода, вот несколько информация о:Оптимальная сеть
- это андроид приложение, так что много пользователей могут использовать его на слабом связи мобильных данных
- в настоящее время, есть 50к активных пользователей , поэтому сервер может иметь высокую нагрузку в часы пик
- третья сторона разрабатывает сервер, так что я могу сделать улучшения на стороне клиента только
скорее всего, многие из вопросов, которые приходят от слабого мобильного соединение данных в часы пик, но все же, если я могу что-то сделать, чтобы улучшить соединение ион, тогда я бы сделал это.
Я управляю запросами в AsyncTask. В onPreExecute()
Я делаю только инициализацию и показывая диалог, здесь ничего действительно не происходит. Я делаю каждый важный кусок в doInBackGround(Void... arg)
, вот точный код:
try
{
HttpClient hc = new DefaultHttpClient();
hc.getParams().setParameter("http.protocol.content-charset", "UTF-8");
HttpParams hp = hc.getParams();
HttpConnectionParams.setConnectionTimeout(hp, Stat.TIMEOUT);
HttpConnectionParams.setSoTimeout(hp, Stat.TIMEOUT);
HttpProtocolParams.setUserAgent(hp, ActMain.userAgent);
httpGet=new HttpGet(item.buildQuery());
HttpResponse resp = hc.execute(httpGet);
Stat.result=_result=EntityUtils.toString(resp.getEntity(), HTTP.UTF_8);
}
catch(MalformedURLException e){}
catch(IOException e){}
return null;
После этого, в onPostExecute(Void param)
Я обрабатываю результат, создание необходимых переменных, а затем запускает Activity
, чтобы показать результаты для пользователей , здесь нет ничего важного.
Странная ошибка, которая происходит довольно много раз: вместо чистого форматированного результата в формате JSON иногда сервер отвечает с сообщением об ошибке 404 с почти открытым текстом. Я предполагаю, что это связано с сервером, поэтому я не могу ничего сделать для его решения, возможно, я мог бы повторно запустить запрос 2-3 раза, чтобы убедиться, что пользователь получит результаты.
Мой настоящий вопрос: могу ли я улучшить вставляемый фрагмент кода, чтобы он был немного более стабильным/оптимальным на стороне клиента? Заранее спасибо!
EDIT: Мне удалось отследить проблему на сервере, у моего приложения больше счетчик активных пользователей, чем я думал, они просто время от времени перегружают сервер, поэтому все в порядке с моими вещами.
Вам необходимо определить, где причина задержек и решить эту проблему. Попытка решить только те проблемы, которые очевидны для вас, скорее всего, будет: a) пустой тратой времени; b) усугубить ситуацию. Например, ускорение работы клиента, если сервер перегружен, может сделать проблему еще хуже. –
Я согласен, поэтому я задаюсь вопросом, является ли предоставленный фрагмент хорошим сетевым сообществом, или есть слабый момент в нем. Если все будет хорошо на моей стороне, я попытаюсь поговорить с разработчиком сервера. – hundeva
Единственное беспокойство, которое я бы хотел, это игнорировать исключения. Это не повлияет на производительность, если вы не получите много ошибок, и вы этого не знаете. –