从在线网络服务器获取android数据非常慢

时间:2016-08-10 00:07:50

标签: android json webserver

我在Android中通过php从MySQL获取104个变量,并尝试在列表视图中显示,但是它需要花费大约1到2分钟的时间来加载值以加快数据获取速度。

我使用json来获取数据,使用任何其他库来快速获取数据。

请用完整的例子说明。

1 个答案:

答案 0 :(得分:1)

试用Android异步Http客户端库

功能

  • 使用版本4.3.6的上游HttpClient而不是Android提供的DefaultHttpClient
  • 与Android API 23及更高版本兼容
  • 发出异步HTTP请求,处理匿名回调中的响应 HTTP请求发生在UI线程之外
  • 请求使用线程池限制并发资源使用 GET / POST参数构建器(RequestParams)
  • 多部分文件上传,没有其他第三方库
  • 没有额外库的流式JSON上传
  • 处理循环和相对重定向
  • 应用程序的小型开销,一切只有90kb
  • 针对不稳定的移动连接优化的自动智能请求重试
  • 自动gzip响应解码支持超快请求
  • 与BinaryHttpResponseHandler的二进制协议通信
  • 使用JsonHttpResponseHandler
  • 将内置响应解析为JSON
  • 使用FileAsyncHttpResponseHandler
  • 将响应直接保存到文件中
  • 持久性Cookie存储,将Cookie保存到您应用的SharedPreferences
  • 使用BaseJsonHttpResponseHandler与Jackson JSON,Gson或其他JSON(de)序列化库集成
  • 使用SaxAsyncHttpResponseHandler支持SAX解析器
  • 支持语言和内容编码,而不仅仅是UTF-8

有关详细信息,请访问以下链接:

http://loopj.com/android-async-http/

以下是使用它的示例:

pdialog.setMessage("Veuillez patienter!");
                pdialog.show();
                RequestParams params = new RequestParams();

                params.put("user_login", username);



                AsyncHttpClient client = new AsyncHttpClient();
                client.post("http://yourUrl.com", params, new AsyncHttpResponseHandler() {
                    @Override
                    public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                        loading = true;

                        AdapterPrincipal adapterPrincipal;
                        String s = "";
                        try {

                            s = new String(responseBody, "UTF-8");
                            Log.d("Error", s.toString());
                            JSONObject arrg = new JSONObject(s);
                            JSONArray query = arrg.getJSONArray("query");
                            Log.i("result from query ", "" + query);
                            for (int i = 0; i < query.length(); i++) {
                                try {

                                    pdialog.dismiss();
                                    JSONObject object = query.getJSONObject(i);

                                    String dateinsertannonce = object.getString("date_insert_annonce");
                                    Log.i("date", dateinsertannonce);
                                    String datevente = object.getString("vendu");
                                    String marque = object.getString("marque");
                                    String Clomn_Model = object.getString("model");
                                    String Clomn_Prix = object.getString("prix");
                                    String Clomn_Kilometrage = object.getString("kilometrage");
                                    String Clomn_BoiteVitesse = object.getString("boite_vitesse");
                                    String Clomn_Energie = object.getString("energie");
                                    String Clomn_Source = object.getString("source");
                                    String Clomn_Url = object.getString("url");
                                    String Clomn_PHOTO = object.getString("images_noms");
                                    String Maj = object.getString("derniere_maj");
                                    int id = object.getInt("id");



                                   voitureList = databaseHelper.getAllVoiture(username, currentLength);


                                    listView.setAdapter(new AdapterLogin(getActivity(), voitureList, username, currentLength));


                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            }
                        } catch (UnsupportedEncodingException e) {
                            e.printStackTrace();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

                    }
                });

            }
        });

    }