Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Volley, Networking sencillo y rapido

Jokin
December 10, 2013

Volley, Networking sencillo y rapido

Presentacion con los aspectos principales de volley, cuales son sus puntos fuertes y debiles, y como empezar a utilizarlo

Jokin

December 10, 2013
Tweet

Other Decks in Programming

Transcript

  1. DroidCon Madrid Puntos clave Sencillez Cacheo en memoria y disco

    respetando los headers Herramientas de debug y traceo
  2. DroidCon Madrid Compromisos de diseño Perfecto LLamadas remotas para rellenar

    la IU ! Correcto Para llamadas en background ! Malo Para llamadas gordas
  3. DroidCon Madrid Problemas Colas: Todas las peticiones se ejecutan en

    serie ! ! // ImageLoader extends AsyncTask ImageLoader imageLoader = new ImageLoader(imageView); ! // Execute in parallel imageLoader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "http://url.com/image.png");
  4. DroidCon Madrid Implementacion ! //Preferiblemente en la inicialización de la

    aplicación. ! 
 RequestQueue = Volley.newRequestQueue(getApplicationContext()); ! ! ImageLoader = new ImageLoader(RequestQueue, new BitmapImageLru()); 

  5. DroidCon Madrid Haciendo llamadas asincronas final String URL = “/resource/volley.html";


    StringRequest req = new StringRequest(URL, new Response.Listener<String>() {
 @Override
 public void onResponse(String response) {
 VolleyLog.v("Response:%n %s", response);
 }
 }, new Response.ErrorListener() {
 @Override
 public void onErrorResponse(VolleyError error) {
 VolleyLog.e("Error: ", error.getMessage());
 }
 }); app.RequestQueue.add(request); !
  6. DroidCon Madrid Futures protected String volleySyncRequest(String url)
 try {
 RequestFuture<String>

    future = RequestFuture.newFuture();
 StringRequest sr = new StringRequest(Request.Method.GET, url, future, future);
 app.RequestQueue.add(sr);
 return future.get();
 } catch (InterruptedException e) {
 e.printStackTrace();
 } catch (ExecutionException e) {
 e.printStackTrace();
 }
 }
  7. DroidCon Madrid Cache ! Cache.Entry entry = app.mRequestQueue.getCache().get(url);
 ! /**

    Verdadero si el contenido esta expirado. */
 public boolean isExpired() 
 /** Verdadero si el contenido necesita ser refrescado. */
 public boolean refreshNeeded()
  8. DroidCon Madrid Comparativa con otras librerias Limpieza de memoria muy

    agresiva Se ha hecho un gran esfuerzo en obtener el máximo rendimiento Si trabajas con imágenes de alta resolución, volley es casi la única solución que funciona bien Si quieres portar código existente, hay librerías que son mas sencillas de incorporar.
  9. DroidCon Madrid Crear peticiones personalizadas @Override
 protected Response<T> parseNetworkResponse(NetworkResponse response)

    {
 try {
 String json = new String(
 response.data, HttpHeaderParser.parseCharset(response.headers));
 return Response.success(
 gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response));
 } catch (UnsupportedEncodingException e) {
 return Response.error(new ParseError(e));
 } catch (JsonSyntaxException e) {
 return Response.error(new ParseError(e));
 }
 }