2015-08-27 2 views
0

это mycode пожалуйста, подсказывают, как ускорить, его получение очень медленно, принимая 5 секунд в первый раз, в следующий раз его принимая 3 секундыAsyncTask занимает 3 секунды LOCALHOST чтения JSON

public ArrayList<HealthBean> getIPList(String user,String mac) { 

     ArrayList<HealthBean> list=new ArrayList<HealthBean>(); 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("client", user)); 
     params.add(new BasicNameValuePair("mac", mac)); 
     Log.d(login_tag, params.toString()); 
     JSONObject json=jsonParser.getJSONFromUrl(getIPList, params);   
     Log.d(login_tag, params.toString()); 

     try { 
      int status=json.getInt("success"); 
      System.out.println("---------------------"+status); 
     } catch (JSONException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

     try { 
      jArray = json.getJSONArray("products"); 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject json_data = jArray.getJSONObject(i); 
       HealthBean bean=new HealthBean(); 
       bean.setIp(json_data.getString("ip")); 
       bean.setDb(json_data.getInt("db")); 
       bean.setLinux(json_data.getInt("linux")); 
       bean.setSlave(json_data.getInt("slave")); 
       bean.setApplication(json_data.getString("app")); 
       bean.setDbPort(json_data.getString("mysql_port")); 
       bean.setLinuxPort(json_data.getString("linux_port")); 

       list.add(bean); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     }   


     return list; 
    } 

// разбор JSON

public JSONObject getJSONFromUrl(String url, List<NameValuePair> params) { 
     // Making HTTP request 
     try { 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 
      httpPost.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent(); 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
int i=0; 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 

      } 
      is.close(); 
      json = sb.toString(); 
      Log.e("JSON", json); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 

     // try parse the string to a JSON object 
     try { 
      jObj = new JSONObject(json);    
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON String 
     return jObj; 

    } 
+0

Что уделило время? Доступ к URL-адресу или разбор JSON? – zmbq

+0

Я думаю, что оба, пожалуйста, предложите мне рассчитать время для каждого процесса. –

+1

Пожалуйста, отформатируйте сообщение, чтобы код приблизился к каждой части. Затем вставьте JSON, который используется. – Bonatti

ответ

0

Пожалуйста, попробуйте использовать модифицированную/залп, чтобы получить лучшую производительность в запросе API, (любые сетевые вызовы).

Имеются контрольные показатели и результаты испытаний по следующей ссылке.

http://instructure.github.io/blog/2013/12/09/volley-vs-retrofit/

В случае, если вы думаете, что ваша цель будет решена с дооснащения (Мой личный выбор), вы можете искать учебники в http://www.truiton.com/2015/04/android-retrofit-tutorial/

надеюсь, что это помогает.

+0

Я попробовал залп, который также принимает почти этот максимум времени. Я могу получить половину второго варианта –

+0

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

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