-1

Я пытаюсь сделать сетевую часть моего приложения более стабильной, более оптимальной, так как я получил некоторые проблемы, заявив, что для выполнения запросов требуется слишком много времени. Прежде чем поделиться части моего кода, вот несколько информация о:Оптимальная сеть

  • это андроид приложение, так что много пользователей могут использовать его на слабом связи мобильных данных
  • в настоящее время, есть 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: Мне удалось отследить проблему на сервере, у моего приложения больше счетчик активных пользователей, чем я думал, они просто время от времени перегружают сервер, поэтому все в порядке с моими вещами.

+2

Вам необходимо определить, где причина задержек и решить эту проблему. Попытка решить только те проблемы, которые очевидны для вас, скорее всего, будет: a) пустой тратой времени; b) усугубить ситуацию. Например, ускорение работы клиента, если сервер перегружен, может сделать проблему еще хуже. –

+0

Я согласен, поэтому я задаюсь вопросом, является ли предоставленный фрагмент хорошим сетевым сообществом, или есть слабый момент в нем. Если все будет хорошо на моей стороне, я попытаюсь поговорить с разработчиком сервера. – hundeva

+0

Единственное беспокойство, которое я бы хотел, это игнорировать исключения. Это не повлияет на производительность, если вы не получите много ошибок, и вы этого не знаете. –

ответ

1

Либо ваш клиент работает медленно, либо быстро. Он должен быть последовательно медленным или быстрым. Если вы наблюдаете медленное поведение иногда и быстрее с тем же мобильным устройством, одним и тем же программным обеспечением, то это не является причиной.

Наиболее вероятной причиной изменения является сеть (как вы сказали) и нагрузка на сервер.

Смежные вопросы