Volley

 Volley

Apresentação sobre o framework Volley, do Google, realizada no sexto encontro do GDG-SP Android Meetup

D4b7a3e2ed10f86e0b52498713ba2601?s=128

Ubiratan Soares

August 06, 2013
Tweet

Transcript

  1. VOLLEY GDG ANDROID MEETUP #06

  2. AGENDA 1 CONTEXTO 3 USANDO 4 POR DENTRO 2 OBTENDO

    5 CONCLUSÕES
  3. CONTEXTO API de alto nível para operações de comunicação sobre

    HTTP Desenvolvida pelo time do Google Play Dispobilizada como código aberto e comentada em sessão do último IO
  4. CONTEXTO Mecanismos facilitadores para o básico do dia-a-dia Promete desempenho

    superior a TODAS as soluções abertas disponíveis Soluções para velhos e novos problemas
  5. OBTENDO ! ! ! ! https://android.googlesource.com/platform/frameworks/volley > git clone

  6. OBTENDO ! Linkar project library Compilar um .jar > cd

    volley > android update project -p . > ant jar
  7. UTILIZANDO Instanciar a fila Instanciar sua requisição Adicionar à fila

  8. ! public void performRequest(String requestURL) { final JsonObjectRequest request =

    new JsonObjectRequest(Method.GET, requestURL, null, new Response.Listener<JSONObject>() { ! @Override public void onResponse(JSONObject response) { // TODO pegue sua resposta } ! }, new Response.ErrorListener() { ! @Override public void onErrorResponse(VolleyError error) { // TODO Deu pau... } }); mRequestQueue.add(request); } !
  9. DEMO

  10. None
  11. ! public class GsonRequest<T> extends Request<T> { ! private final

    Gson mGson; private final Class<T> mClass; private final Listener<T> mListener; ! public GsonRequest(int method, String url, Class<T> objectClass, Listener<T> listener, ErrorListener errorListener) { super(method, url, errorListener); this.mClass = objectClass; this.mListener = listener; mGson = new Gson(); } ! @Override protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(mGson.fromJson(json, mClass), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException e) { return Response.error(new ParseError(e)); } } ! @Override protected void deliverResponse(T response) { mListener.onResponse(response); } } GsonRequest.java
  12. BITMAPS... Volley repassa ao desenvolvedor a tarefa de implementação de

    caching de BITMAPS ...
  13. L2 L1 MEMORY DISK NETWORK + + bytes ms RELEMBRAR

    É VIVER
  14. CACHING Most Recently Used Least Recently Used Least Frequently Used

    Clock with Adaptative Replacement ....
  15. Pacote de compatibilidade android-support-v4.jar Disk LRU Cache Android-BitmapCache CACHING https://github.com/JakeWharton/DiskLruCache

    https://github.com/chrisbanes/Android-BitmapCache
  16. ! public class BitmapLruCache extends LruCache<String, Bitmap> implements ImageCache {

    ! public static int getDefaultLruCacheSize() { final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); final int cacheSize = maxMemory / 8; return cacheSize; } ! public BitmapLruCache() { this(getDefaultLruCacheSize()); } ! public BitmapLruCache(int sizeInKiloBytes) { super(sizeInKiloBytes); } ! @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes() * value.getHeight() / 1024; } ! @Override public Bitmap getBitmap(String url) { return get(url); } ! @Override public void putBitmap(String url, Bitmap bitmap) { put(url, bitmap); } } BitmapLRUCache.java
  17. GEEK++ Caching in Teory and Practice http://goo.gl/T1Pio Wikipedia http://en.wikipedia.org/wiki/Cache_algorithms Livros!

    Stallings, Tanenbaum, etc...
  18. TRACING ! > adb shell setprop log.tag.Volley VERBOSE

  19. None
  20. MUITO MAIS !!! Retry customizável para cada requisição Requisições facilmente

    canceláveis Suporte decente à semântica HTTP (GET, POST, PUT, DELETE) Camada HTTP transparente para o resto da API
  21. CONCLUSÕES Biblioteca robusta e madura Facilmente extensível (Gson, Jackson, XML,

    etc) Orientada ao desempenho Mecanismos para debugging e tracing Pilha HTTP plugável
  22. CONCLUSÕES Ainda carece de mais documentação e exemplos... RUIM para

    grandes payloads Pode melhorar em relação à Bitmaps (transformações, API menos burocrática...)
  23. SABER MAIS VolleyDemo http://youtu.be/yhv8l9F44qo Volley : Easy, Fast Networking for

    Android http://github.com/ubiratansoares/VolleyDemo
  24. DÚVIDAS ????

  25. UBIRATAN SOARES @ubiratanfsoares google.com/+UbiratanSoares ubiratansoares.com.br ANDROID DEVELOPER