Comunicação Web em apps Android - Parte III
28/03/2014
Olá desenvolvedores Android,
Chegamos a terceira parte da série de posts sobre comunicação web em apps Android (veja a primeira e segunda partes), onde a idéia é falar sobre um framework que foi apresentado no Google I/O de 2013: Volley.
Nos posts anteriores, a idéia foi mostrar os conceitos e bases da comunicação web em apps Android, para que você compreenda como é feita essa comunicação e pudesse assim, usar da maneira mais adequada para o seu app. Mas como deve ter percebido, talvez até na prática, esses trechos de código para comunicação acabam se repetindo em diversos projeto ou até vários pontos do seu app. O que nos leva a pensar que isso deveria estar em uma biblioteca, não é verdade?
É no sentido de poupar tempo e facilitar as operações básicas que foi criada a Volley, que ajuda a realizar requisições, tratar respostas, trabalhar com filas de requisições, prioridades e também oferece cache, assim você pode rapidamente ter dados disponíveis em seu app.
Mas, não é uma biblioteca que se aplica em todas as situações. As respostas são entregues inteiras diretamente na memória, o que torna a Volley uma opção não indicada para grandes quantidades de dados como vídeos e música. Ou seja, é a escolha ideal para requisições menores, como consumo de APIs JSON, XML e arquivos menores como imagens.
Todo o código do framework está disponível juntamente com todo o código do Android Open Source Project. Dessa forma, há diversas maneiras de importar o código e integrá-lo com o seu projeto Android, vamos ver algumas dessas opções:
Na Volley, toda a comunicação web e até o tratamento de cache é através de requisições. E o principal mecanismo para isso, é uma fila de requisições, a RequestQueue. Essa fila é utilizada em todos os pontos da aplicação, como uma forma de centralizar todo o fluxo de comunicação. Inclusive permitindo priorizar requisições dentro dessa fila.
Como a RequestQueue vai ser utilizada em toda a aplicação, uma maneira de ter apenas uma instância da fila e dar fácil acesso a todas os outros componentes do seu app, é criar uma classe que estende de Application e registrá-la no Manifest, veja o exemplo:
VolleySampleApplication
AndroidManifest
Para seguir o exemplo que foi utilizado no post anterior, vamos fazer uma requisição e enviar por POST para consumir o mesmo webservice do exemplo anterior, que irá contar quantas palavras há na frase enviada por parâmetro e devolver um JSON com a quantidade de palavras e a frase original.
No trecho abaixo, está a criação da requisição e a inclusão dos parâmetros, que é feita sobrescrevendo o método getParams(). Depois, a requisição é adicionada à fila e será executada pela Volley. Veja o trecho completo:
Como o servidor responde um JSON, a primeira idéia pode ser em utilizar uma JsonObjectRequest, mas esse tipo de requisição não executa o método getParams(), já que utiliza o corpo da requisição para enviar o JSON esperado pela requisição. Assim, caso você tente adicionar parâmetros a requisição, verá que eles nunca irão chegar ao servidor. Por isso, foi escolhido uma StringRequest e o seu retorno será convertido para um objeto JSON.
Na criação da request, o terceiro e quarto parâmetros representam os listeners para sucesso e falha da requisição, nesse caso a própria Activity será o listener para ambos os casos. Abaixo está o código para tratamento da String recebida, sua conversão para JSON e então, a atualização da interface com o número de palavras na frase:
Você deve levar em consideração que esse é um código de exemplo, então para que não tenha que sobrescrever o método getParams() todas as vezes, deixando seu código muito extenso e com uma legibilidade ruim, seria uma boa idéia considerar o encapsulamento desse processo em alguma classe auxiliar, e também retirar o código de tratamento do JSON da Activity.
Uma funcionalidade muito poderosa na Volley é o cache. Para não deixar o post muito grande, não vamos entrar em detalhes, mas o principal ponto é que é possível armazenar o cache de acordo com a requisições. Assim, é possível ter resultados rápidos para casos onde se realizam repetidas requisições ou até, para uma eventual falta de conectividade.
Cada requisição pode ser armazenada ou removida individualmente, e até todo o cache pode ser invalidado de uma só vez, conforme a necessidade. Também é possível tratar a data em que a inclusão no cache foi feita, e baseado na existência ou tempo de vida do cache, tomar a decisão se deve ser feita a requisição ou não.
Quando se trabalha com muitas requisições dentro de um aplicativo, em algum momento pode se desejar que alguma requisição seja tratada com alguma prioridade. Apesar de não ter um método como setPriority(), é possível fazer algo parecido como foi feito para a getParams() e sobrescrever o método getPriority() e setPriority().
Para saber mais sobre a Volley, assista o vídeo Volley: Easy, Fast Networking for Android do Google I/O de 2013, de quando a biblioteca foi apresentada.
E para o exemplo completo dos códigos utilizados aqui, veja o projeto VolleySample disponível no GitHub.
Fique a vontade para deixar seu comentário, compartilhar esse post e também, estamos disponíveis através da página +Desenvolvedores Google, onde você pode conversar com outros desenvolvedores Android e trocar experiências sobre comunicação Web em aplicativos Android.
+Neto Marin
Developer Advocate
Chegamos a terceira parte da série de posts sobre comunicação web em apps Android (veja a primeira e segunda partes), onde a idéia é falar sobre um framework que foi apresentado no Google I/O de 2013: Volley.
Nos posts anteriores, a idéia foi mostrar os conceitos e bases da comunicação web em apps Android, para que você compreenda como é feita essa comunicação e pudesse assim, usar da maneira mais adequada para o seu app. Mas como deve ter percebido, talvez até na prática, esses trechos de código para comunicação acabam se repetindo em diversos projeto ou até vários pontos do seu app. O que nos leva a pensar que isso deveria estar em uma biblioteca, não é verdade?
Quando usar Volley ?

Mas, não é uma biblioteca que se aplica em todas as situações. As respostas são entregues inteiras diretamente na memória, o que torna a Volley uma opção não indicada para grandes quantidades de dados como vídeos e música. Ou seja, é a escolha ideal para requisições menores, como consumo de APIs JSON, XML e arquivos menores como imagens.
Integrando a Volley ao seu projeto Android
Todo o código do framework está disponível juntamente com todo o código do Android Open Source Project. Dessa forma, há diversas maneiras de importar o código e integrá-lo com o seu projeto Android, vamos ver algumas dessas opções:
- Copiar o código para o seu projeto Android
- Gerar um JAR do código e importar como biblioteca
- Se utilizar Git para o controle de versão do seu projeto, pode adicionar o framework Volley como um sub-módulo do seu projeto.
Comunicação com Requests
Na Volley, toda a comunicação web e até o tratamento de cache é através de requisições. E o principal mecanismo para isso, é uma fila de requisições, a RequestQueue. Essa fila é utilizada em todos os pontos da aplicação, como uma forma de centralizar todo o fluxo de comunicação. Inclusive permitindo priorizar requisições dentro dessa fila.
Como a RequestQueue vai ser utilizada em toda a aplicação, uma maneira de ter apenas uma instância da fila e dar fácil acesso a todas os outros componentes do seu app, é criar uma classe que estende de Application e registrá-la no Manifest, veja o exemplo:
VolleySampleApplication
public class VolleySampleApplication extends Application { private RequestQueue queue; @Override public void onCreate() { this.queue = Volley.newRequestQueue(this); } public RequestQueue getRequestQueue() { return queue; } }
AndroidManifest
<application android:name=".VolleySampleApplication" android:allowBackup="true" ... </application>
Criando e enviando uma requisição por POST
Para seguir o exemplo que foi utilizado no post anterior, vamos fazer uma requisição e enviar por POST para consumir o mesmo webservice do exemplo anterior, que irá contar quantas palavras há na frase enviada por parâmetro e devolver um JSON com a quantidade de palavras e a frase original.
No trecho abaixo, está a criação da requisição e a inclusão dos parâmetros, que é feita sobrescrevendo o método getParams(). Depois, a requisição é adicionada à fila e será executada pela Volley. Veja o trecho completo:
StringRequest strReq = new StringRequest(Request.Method.POST, url, this, this) { @Override protected MapgetParams(){ Map params = new HashMap (); params.put("text", textEditText.getText().toString()); return params; } } VolleySampleApplication app = (VolleySampleApplication) getApplication(); app.getRequestQueue().add(strReq);
Como o servidor responde um JSON, a primeira idéia pode ser em utilizar uma JsonObjectRequest, mas esse tipo de requisição não executa o método getParams(), já que utiliza o corpo da requisição para enviar o JSON esperado pela requisição. Assim, caso você tente adicionar parâmetros a requisição, verá que eles nunca irão chegar ao servidor. Por isso, foi escolhido uma StringRequest e o seu retorno será convertido para um objeto JSON.
Na criação da request, o terceiro e quarto parâmetros representam os listeners para sucesso e falha da requisição, nesse caso a própria Activity será o listener para ambos os casos. Abaixo está o código para tratamento da String recebida, sua conversão para JSON e então, a atualização da interface com o número de palavras na frase:
@Override public void onResponse(String s) { if (s != null) { try { JSONObject jsonObject = new JSONObject(s); if (jsonObject != null) { int words = jsonObject.getInt("words"); updateWordsCount(words); } } catch (JSONException e) { e.printStackTrace(); } } } @Override public void onErrorResponse(VolleyError volleyError) { volleyError.printStackTrace(); }
Você deve levar em consideração que esse é um código de exemplo, então para que não tenha que sobrescrever o método getParams() todas as vezes, deixando seu código muito extenso e com uma legibilidade ruim, seria uma boa idéia considerar o encapsulamento desse processo em alguma classe auxiliar, e também retirar o código de tratamento do JSON da Activity.
Cache
Uma funcionalidade muito poderosa na Volley é o cache. Para não deixar o post muito grande, não vamos entrar em detalhes, mas o principal ponto é que é possível armazenar o cache de acordo com a requisições. Assim, é possível ter resultados rápidos para casos onde se realizam repetidas requisições ou até, para uma eventual falta de conectividade.
Cada requisição pode ser armazenada ou removida individualmente, e até todo o cache pode ser invalidado de uma só vez, conforme a necessidade. Também é possível tratar a data em que a inclusão no cache foi feita, e baseado na existência ou tempo de vida do cache, tomar a decisão se deve ser feita a requisição ou não.
Prioridade
Quando se trabalha com muitas requisições dentro de um aplicativo, em algum momento pode se desejar que alguma requisição seja tratada com alguma prioridade. Apesar de não ter um método como setPriority(), é possível fazer algo parecido como foi feito para a getParams() e sobrescrever o método getPriority() e setPriority().
Mais detalhes
Para saber mais sobre a Volley, assista o vídeo Volley: Easy, Fast Networking for Android do Google I/O de 2013, de quando a biblioteca foi apresentada.
E para o exemplo completo dos códigos utilizados aqui, veja o projeto VolleySample disponível no GitHub.
Fique a vontade para deixar seu comentário, compartilhar esse post e também, estamos disponíveis através da página +Desenvolvedores Google, onde você pode conversar com outros desenvolvedores Android e trocar experiências sobre comunicação Web em aplicativos Android.
+Neto Marin
Developer Advocate
39 comentários :
¡Hola!
¿Ha establecido el tono cuando alguien llama a nuevas creaciones, configurar el sonido para su teléfono nunca es tan fácil, sonidos de animales, sonidos naturales, la última música, usted ve a mi blog: https://sonidosgratis.net/
¡Arriba los últimos sonidos hoy!
https://sonidosgratis.net/iphone-xs/
https://sonidosgratis.net/dj/
https://sonidosgratis.net/dj-scratch/
https://sonidosgratis.net/iphone-xs-max/
Gracias, puedes ver más: aplicación de teléfono de sonido extrema: https://sonidosgratis.net/whatsapp/
Dewapoker selalu ingin berusaha semaksimal mungkin untuk memberikan yang terbaik untuk para member yang bermain didalam situs Judi Online dewapoker , seperti misalnya layanan customer service yang selain baik, ramah, dan professional juga siap untuk melayani anda selama 24 jam full non-stop serta sigap untuk memberikan solusi-solusi untuk member yang mengalami kendala pada saat bermain. Dengan ini kami memberikan berbagai macam permainan remi dan Poker Online yang ada didalam situs dewa poker asia sudah pasti akan mejadi pilihan anda dalam bermain berbagai jenis judi online yang ada pada saat ini.
Tidak ada orang yang selalu beruntung dalam bermain poker online. Raih kemenangan judi online anda bersama kami sekarang juga, dan rasakan sensasi permainan Player Vs Player 100% dan dapatkan jackpot yang sangat mudah hanya di poker online 2019. Pokerbo888 BANDAR POKER ONLINE DAN AGEN DOMINO QIU QIU TERPERCAYA DI INDONESIA. Dan tidak lupa lagi POKER 88 akan memberikan tambahan chips untuk member baru yang mendaftar dan melakukan deposit dengan ketentuan sebagai berikut : 1. BONUS DEPOSIT MEMBER BARU 100.000. TERPERCAYA DAN PERTAMA YANG MENERIMA DEPOSIT VIA GOPAY ,GABUNG DAN DAPATKAN BONUS DEPOSIT PERDANA DIWEBSITE KAMI POKERBO888.
Are you a student and willing to get academic writing service from an expert writer then now you do not need to worry about it because i have finally found a great website named as academic writing pro that can help you in getting higher grades in your class without any struggle.
O Android está tudo bem, seus toques também, eu geralmente os baixa em:https://tonosdellamadagratis.net/samsung/. Há muita música Android lá.
Nice article, thanks for sharing!
Anúncios de Carros
Comprar carro usado ou seminovo: Compra e venda usadosCompre e venda de usados: em todos os Estados do Brasil. Anúncios de carros particulares, de revenda e concessionárias. Confira anúncios de novos veículos todos os dias:. Faça uma pesquisa por marca ou modelo de forma fácil e rápida utilizando nosso filtro de busca detalhada na sessão de Carros a Venda ou na Página Inicial.
Best regards,
Your follower
Alex
Tu artículo es muy útil. Puedo entender más sobre mi teléfono Android. ¿Sabes cómo configurar un suonerie para un teléfono Android?
Sé que una buena aplicación de Android para que tu teléfono vea televisión en línea es Mobdro apk en la página de inicio:https://mobdroportugal.net/
Descarga los últimos tonos de llamada gratis de alta calidad 2020 tonos de llamada clasicos
Possui os melhores toques para celular em 2020
no https://tonosdellamada.mobi/
Eu costumava conhecer um endereço para baixar toques gratuitos para telefones, você pode consultar em: https://suonerieandroid.info/top-suonerie
Obrigado pelo seu post, eu realmente gosto deles. Faça o download dos melhores toques e experimente os sons de 2020 gratuitamente em: https://kostenloseklingeltone.mobi/hollywood-la-vision-gigi-dagostino-11685/
puede instalar los últimos tonos de llamada hoy en tonos para celular
Ich liebe auch den Klingelton und benutze ihn jeden Tag auf meinem Handy. iphone klingelton wird Sie auf Ihrem iPhone unterhalten.
Ótimo, obrigado por compartilhar. Você pode aprender mais músicas mp3 grátis em: https://beltonengratis.net/rock/
Greetings! Very useful advice in this particular article! It is the little changes that will make the most significant changes. Many thanks for sharing!
poker online
poker
poker 88
Agen Poker merupakan poker online asli terbaik dan terpercaya. Situs poker online ini menyediakan beragam permainan domino88 seperti texas poker, ceme, domino kiu kiu, capsa susun, ceme keliling, blackjack, omaha, super10 dan super bull . Cukup dengan deposit Rp 10.000 anda sudah bisa bermain di server berkecepatan tinggi dan menjamin data-data semua member kami
Untuk semua transaksi di https://199.192.31.253 kami mempunyai sarana bank yang sudah terkenal di indonesia, di antaranya adalah : BCA, BNI, BRI, CIMBNIAGA, MANDIRI, MAYBANK, MEGA, PANIN, PERMATA, KOSPIN JASA dan JENIUS. sarana ini memudahkan anda selama bertransaksi deposit maupun withdraw. Dengan kemudahan ini anda dapat mengakses pokerlounge99 ini di smartphone kesayangan anda.
Raih hadiah menarik dari dewatogel yang bisa anda dapatkan setiap harinya. Hadiah yang kami berikan di antaranya lucky spin , big small , poker bid yang bisa anda dapatkan setiap harinya dan mysteri box yang bisa anda buka setiap minggunya. Ayo raih keuntungan hanya di Domino88.cc. jika ada keluhan atau pertanyaan silahkan hubungi livechat kami yang siap melayani anda.
Gracias por el artículo . ¿Quieres que tu dispositivo tenga los mejores tonos de llamada gratis? Eche un vistazo a yotonos.com .
J'adore écouter de la musique et j'écoute régulièrement de la musique au https://msonneries.com/, ce qui me soulage du stress au travail et j'en suis très satisfait.
Grazie per l'articolo, puoi scaricare suonerie gratuitamente su: - https://suonerietelefono.com/
Muito obrigado pelo artigo
música, bem como usar a música para se comunicar para se expressar e muitas outras coisas.
Aqui está uma coleção de toques que você pode consultar https:yotonos.com
Hi there,
Very nice post and blog, I found it very explanatory and informative, thank you very much for sharing your knowledge and wisdom with us, we know how important is experience in our lives.
take care and stay positive
Your follower,
Lisa from Concessionárias
Thank you for your information, i hope you will make more great content like this in the future โจ๊กเกอร์ ดาวน์โหลด
Nice Blog. Thanks for sharing with us. Such amazing information.
MyBlogger Club
Guest Posting Site
Best Guest Blogging Site
Guest Blogger
Guest Blogging Site
tonosabc es un sitio de descarga de tonos de llamada completamente gratuito. Con los últimos y más populares tonos de llamada, constantemente actualizados.
Read this blog to get the satisfied answer to solve your all problems related to Brother Printer in Error State. Follow the step by step easy instructions to solve your queries.
Thankyou google developer yang telah membahas tentang Komunikasi Web di Aplikasi Android - Bagian III
Jangan lupa untuk mampir ke website resmi kami
Dewapoker
Poker88
Obrigado pelas informações úteis que você compartilhou. Baixe toques gratuitos com muitas músicas populares agora mesmo no klingeltöne
it's an extremely good and useful article, minecraft miễn phí apk is proud to be the best game today!
fatal motorcycle accidentThanks for sharing a very useful blog commenting website
https://espacioapk.org/spotify-premium/
Thank you for sharing, hope you can take a few minutes to check out our free phone ringtones line 着信音
Coisa interessante de ler, obrigado! Relaxe com estes toques exclusivos aqui: vyzvánění na mobil
Searching for stevenage houses for sale, we have compiled this helpful guide with everything you need to know about the town and its real estate market.
XLSX Word Count Calculator is an essential tool for professionals who need to analyze the text distribution within Excel spreadsheets.
Well put together! Benazir Kafalat Get started at [Ehsaas8171bisp.com]
This was very useful, thanks a lot!
Download a list of free phone ringtones at the website: klingeltöne
Postar um comentário