¿Se recomienda Android volley?

Hola,

Simplemente compartiendo mis ideas y puntos de vista relacionados con esto. Espero que encuentres otras soluciones mejores, pero esto te dará algunas ideas.

VOLLEY: Fácil de usar, eficiente en memoria y puede implementarse en poco tiempo.

Tienen sus propios pros y contras.

Mercancías de volea

  • La parte de redes no es solo para imágenes. Volley está destinado a ser una parte integral de su back-end. Para un proyecto nuevo basado en un servicio REST simple, esto podría ser una gran victoria.
  • NetworkImageView es más agresivo con respecto a la limpieza de solicitudes que Picasso, y más conservador en sus patrones de uso de GC. NetworkImageView se basa exclusivamente en fuertes referencias de memoria y limpia todos los datos de la solicitud tan pronto como se realiza una nueva solicitud para un ImageView, o tan pronto como ImageView se mueve fuera de la pantalla.
  • Actuación. Esta publicación no evaluará esta afirmación, pero claramente se han cuidado de ser juiciosos en sus patrones de uso de memoria. Volley también hace un esfuerzo para realizar devoluciones de llamadas por lotes al hilo principal para reducir el cambio de contexto.
  • Al parecer, Volley también tiene futuros. Echa un vistazo a RequestFuture si estás interesado.
  • Si se trata de imágenes comprimidas de alta resolución, Volley es la única solución aquí que funciona bien.
  • Volley se puede usar con Okhttp (la nueva versión de Okhttp admite NIO para un mejor rendimiento)
  • Volley juega bien con el ciclo de vida de la Actividad.

Problemas con volea

Dado que Volley es nuevo, pocas cosas aún no son compatibles, pero está solucionado.

  1. Solicitudes de partes múltiples (Solución: https://github.com/vinaysshenoy/…)
  2. está menos documentado, pero muchas de las personas que apoyan esta volea en github, java, como documentación, se pueden encontrar aquí. En el sitio web para desarrolladores de Android, puede encontrar una guía para la transmisión de datos de red con Volley. Y el código fuente de voley se puede encontrar en Google Git
  3. Para resolver / cambiar la Política de redireccionamiento de Volley Framework, use Volley con OkHTTP.

NOTA: Fuente de stackoverflow

Otras bibliotecas similares:

cuadrado / modernizado

OkHttp

stephanenicolas / robospice

Consulte los enlaces a continuación para obtener más detalles.

¿Qué biblioteca HTTP de Android usar?

Retrofit vs Volley | AL NUEVO Blog

Cualquier edición … bienvenida.

Volley es una biblioteca HTTP desarrollada por Google y se introdujo por primera vez durante Google I / O 2013. Esta biblioteca se utiliza para transmitir datos a través de la red. En realidad, hace que las redes sean más rápidas y fáciles para las aplicaciones. Está disponible a través del repositorio AOSP (Android Open Source Project). La biblioteca de voley tiene las características como programación automática de solicitud de red, múltiples conexiones concurrentes, priorización de solicitud, cancelar / bloquear una solicitud, administración más fácil de la interfaz de usuario con datos recuperados asincrónicamente de la red y también ofrece una personalización más fácil. Volley usa caché para mejorar el rendimiento de la aplicación al ahorrar memoria y ancho de banda del servidor remoto.

Volley utiliza el concepto de cachés para mejorar el rendimiento de la aplicación. Por ejemplo, supongamos que está utilizando Asynctask para obtener imágenes y descripciones de una matriz JSON creada en la API del servidor. El contenido se obtiene en el modo vertical y ahora el usuario gira la pantalla para cambiarlo al modo horizontal. La actividad se destruye y, por lo tanto, el contenido se recuperará nuevamente. Como el usuario vuelve a llamar al mismo recurso al servidor, es un desperdicio de recursos y, en última instancia, una mala experiencia del usuario.

Volley proporciona una solución a este problema, ya que almacena en caché los datos. Cuando el usuario solicita los mismos datos, en lugar de llamar desde el servidor, Volley los muestra directamente desde el recurso de ahorro de caché y, por lo tanto, mejora la experiencia del usuario. Leer más Tutorial completo sobre Volley en Android con diagramas de Volley Tutorial con ejemplo en Android Studio

Todo depende de su caso de uso.

Las siguientes son la biblioteca de redes de Android que puede elegir según sus requisitos:

  1. Redes de Android rápidas amitshekhariitbhu / Fast-Android-Networking
  2. Retrofit
  3. Voleo

De todos modos, la rápida conexión de red de Android admite todo, como descargar, cargar, obtener una solicitud, publicar una solicitud, etc.

Volley es una biblioteca HTTP que hace que la creación de redes para aplicaciones de Android sea más fácil y, lo que es más importante, más rápida, por lo que depende totalmente de sus requisitos. El uso de Volley facilita el manejo de JSON, pero como almacena en caché los datos durante el análisis, por lo que no se recomienda para manejar operaciones de datos grandes como descargar archivos, transmitir, etc. Consulte los enlaces a continuación para obtener más detalles.

Transmitiendo datos de red usando Volley

Espero que esto te pueda ayudar.

HttpResponse fue la biblioteca utilizada por Android hasta hace poco. Para usarlo, uno necesitaba escribir un controlador de respuestas completo y usar un hilo asincrónico, para usarlo, ya que ejecutarlo en el hilo principal hace que deje de procesar cualquier entrada del usuario. Como puede ver, la cosa while es bastante larga y complicada, y llega a tener más de 50 líneas de código.

Por eso fue en desuso.

La nueva biblioteca recomendada Volley es exactamente lo contrario. Todo se puede manejar en 20 líneas más o menos, no es necesario usar otros hilos, ya que todo se soluciona. La guía de desarrolladores de Android tiene un tutorial simple si está buscando uno.

// agrega bibliotecas en gradle

dependencias {
compilar fileTree (dir: ‘libs’, incluir: [‘* .jar’])
androidTestCompile (‘com.android.support.test.espresso: espresso-core: 2.2.2’, {
excluir grupo: ‘com.android.support’, módulo: ‘soporte-anotaciones’})

compile ‘com.android.support:appcompat-v7:24.2.1’ compile ‘com.android.support:recyclerview-v7:24.1.1’ compile ‘com.android.volley: volley: 1.0.0’ testCompile ‘junit: junit: 4.12 ‘}

importar android.app.Application;

importar android.text.TextUtils;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
importar com.android.volley.toolbox.Volley;

AppController de clase pública extiende la aplicación {

public static final String TAG = AppController.class.getSimpleName ();

RequestQueue privado mRequestQueue;

AppController estático privado mInstance;

@Override public void onCreate () {
super.onCreate ();
mInstance = this;
}

AppController público estático sincronizado getInstance () {
retorno mInstance;
}

requestQueue public getRequestQueue () {
if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue (getApplicationContext ());
}

return mRequestQueue;
}

public void addToRequestQueue (Request req, String tag) {
req.setTag (TextUtils.isEmpty (etiqueta)? TAG: etiqueta);
getRequestQueue (). add (req);
}

public void addToRequestQueue (Request req) {
req.setTag (TAG);
getRequestQueue (). add (req);
}

public void cancelPendingRequests (etiqueta de objeto) {
if (mRequestQueue! = null) {
mRequestQueue.cancelAll (etiqueta);
}
}
}

// contactmodel

ContactModel clase pública {

ID de cadena;
Nombre de cadena, correo electrónico, dirección, género;

public String getMobile () {
volver móvil;
}

public void setMobile (String mobile) {
this.mobile = mobile;
}

public String getHome () {
volver a casa;
}

public void setHome (String home) {
this.home = inicio;
}

public String getOffice () {
oficina de retorno;
}

public void setOffice (oficina de cadenas) {
this.office = office;
}

Cadena móvil, hogar, oficina;

public String getId () {
ID de retorno;
}

public void setId (ID de cadena) {
this.id = id;
}

public String getName () {
nombre de retorno;
}

public void setName (nombre de cadena) {
this.name = nombre;
}

public String getEmail () {
devolver correo electrónico;
}

public void setEmail (correo electrónico de cadena) {
this.email = correo electrónico;
}

public String getAddress () {
dirección del remitente;
}

public void setAddress (dirección de cadena) {
this.address = dirección;
}

public String getGender () {
devolver el género;
}

public void setGender (género de cadena) {
this.gender = género;
}

}

// contactsadapter

importar android.content.Context;
importar android.support.v7.widget.RecyclerView;
importar android.view.LayoutInflater;
importar android.view.View;
importar android.view.ViewGroup;
importar android.widget.TextView;

import java.util.List;

/ ** * Creado por A2sa el 16/03/2017. * / public class ContactsAdatper extiende RecyclerView.Adapter {
Lista contactModelList;
Contexto de contexto;

public ContactsAdatper (contexto contextual, List contactModelList) {

this.context = contexto;
this.contactModelList = contactModelList;
}

La clase estática pública ViewHolder extiende RecyclerView.ViewHolder {
Nombre de TextView;
Correo electrónico TextView;
TextView mobile;

public ViewHolder (Ver itemView) {
super (itemView);
nombre = (TextView) itemView.findViewById (R.id.name);
email = (TextView) itemView.findViewById (R.id.email);
mobile = (TextView) itemView.findViewById (R.id.mobile);
}
}

@Override public ContactsAdatper.ViewHolder onCreateViewHolder (ViewGroup parent, int viewType) {

Ver v = LayoutInflater.from (parent.getContext ()). Inflate (R.layout.list_cell, parent, false);
ContactsAdatper.ViewHolder cv = new ContactsAdatper.ViewHolder (v);

volver cv;
}

@Override public void onBindViewHolder (final ContactsAdatper.ViewHolder titular, posición int final) {
ContactModel contactModel = contactModelList.get (posición);
holder.mobile.setText (contactModel.getMobile ());
holder.email.setText (contactModel.getEmail ());
holder.name.setText (contactModel.getName ());

}

@Override public int getItemCount () {
return contactModelList.size ();
}
}

//Actividad principal

clase pública MainActivity extiende AppCompatActivity {
Lista de RecyclerView;
List contactModelList = new ArrayList <> ();

@Override protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
lista = (RecyclerView) findViewById (R.id.list);

Apicall ();

}

apicall público vacío () {

String url = ” http://api.androidhive.info/contacts/&quot ;;
Constructor Uri.Builder = Uri.parse (url) .buildUpon ();

Cadena apiurl = builder.build (). ToString ();
StringRequest strRequest = new StringRequest (Request.Method.GET, apiurl,
nueva Response.Listener () {
@Override public void onResponse (respuesta de cadena) {
tratar {

JSONObject jsonObject = nuevo JSONObject (respuesta);
Contactos de JSONArray = jsonObject.getJSONArray (“contactos”);
for (int i = 0; i JSONObject c = contactos.getJSONObject (i);
ContactModel contactModel = nuevo ContactModel ();
contactModel.setId (c.getString (“id”));
contactModel.setName (c.getString (“nombre”));
contactModel.setEmail (c.getString (“correo electrónico”));
contactModel.setAddress (c.getString (“dirección”));
contactModel.setGender (c.getString (“género”));

JSONObject c1 = c.getJSONObject (“teléfono”);
contactModel.setHome (c1.getString (“inicio”));
contactModel.setMobile (c1.getString (“mobile”));
contactModel.setOffice (c1.getString (“oficina”));

contactModelList.add (contactModel);

LinearLayoutManager layoutManager = new LinearLayoutManager (getApplicationContext ());
list.setLayoutManager (layoutManager);

ContactsAdatper ContactsAdatper = new ContactsAdatper (MainActivity.this, contactModelList)
list.setAdapter (contactosAdatper);

}

} catch (JSONException e) {
e.printStackTrace ();
}
}
}, nueva Response.ErrorListener () {
@Override public void onErrorResponse (VolleyError volleyError) {
Toast.makeText (MainActivity.this, “Vuelva a intentarlo”, Toast.LENGTH_SHORT) .show ();
}
});
//AppController.getInstance (). GetRequestQueue (). GetCache (). Clear (); AppController.getInstance (). AddToRequestQueue (strRequest);
}
}

http://schemas.android.com/apk/res/android&quot ; android: layout_width =” match_parent “android: layout_height = “match_parent” android: orientación = “vertical”>

// POST

privado vacío addToFavourite () {
cadena final userId = sharedPreferences.getString (“userId”, “”);
final String key = sharedPreferences.getString (“key”, “”);

String url = Common.AD;
StringRequest strRequest = new StringRequest (Request.Method.POST, url,
nueva Response.Listener () {
@Override public void onResponse (respuesta de cadena) {
tratar {

JSONObject jsonObject = nuevo JSONObject (respuesta);
if (jsonObject.getString (“status”). equals (“1”)) {
holder.favouriteToggleButton.setVisibility (View.VISIBLE);
Toast.makeText (contexto, “Agregado a favoritos”, Toast.LENGTH_SHORT) .show ();
} más {
holder.favouriteToggleButton.setVisibility (View.VISIBLE);

}
} catch (JSONException e) {
e.printStackTrace ();
}
}
}, nueva Response.ErrorListener () {
@Override public void onErrorResponse (error VolleyError) {
holder.favouriteLoading.setVisibility (View.GONE);
Toast.makeText (contexto, “Vuelva a intentarlo”, Toast.LENGTH_SHORT) .show ();
}
}) {
@Override Mapa protegido getParams () {
Map params = new HashMap ();
params.put (“user_id”, userId);
params.put (“clave”, clave);
params.put (“switch_id”, switchModelList.get (position) .getSwitchId ());
parámetros de retorno;
}
};
AppController.getInstance (). AddToRequestQueue (strRequest);

}

Recomiendo usar Android volley. Al menos para los principiantes que acaban de comenzar a trabajar en Android y no tienen idea de cómo jugar con datos JSON, ya que viene con algunos métodos predefinidos para obtener datos JSON fácilmente y a nivel principiante puede resultarle fácil. También puede usarlo en una etapa posterior, pero durante algunas aplicaciones puede requerir que la solicitud al servidor se pase cada 2–3 segundos en ese momento, la descarga puede crear un problema, de acuerdo con los requisitos necesarios, el mejor uso de la descarga.

Recomiendo volley e incluso google está proporcionando soporte para usarlo en su proyecto de Android

Android trabajando con Volley Library

esto puede ayudarlo a comenzar a trabajar con voleibol

La mejor de las suertes

Android Volley es un buen cliente HTTP para aplicaciones de Android. Pero estoy un poco sesgado hacia OkHttp por Square.

He señalado algunos puntos para elegir un cliente Http para sus aplicaciones de Android en mi artículo – Elija su biblioteca para llamadas de red desde Java / Android – {OneTouchCode.com}

Espero que esto sea útil.

La modificación es mucho más fácil de codificar que la volea.

More Interesting

¿Se puede invertir en la compra de aplicaciones iOS y Android de los desarrolladores originales? ¿Es rentable?

¿Cuáles son los pasos para crear una base de datos sqlite en Android Studio?

¿Qué paga más: desarrollo de aplicaciones o juegos para Android?

Cómo hacer que un archivo de juego Java sea instalable en Android

¿Puedo desarrollar una aplicación de Android sin ningún IDE y usando un simple bloc de notas?

Quiero aprender programación de Android. ¿Recomendarías aprender Kotlin o Java?

¿Debería alguien que está aprendiendo el desarrollo de aplicaciones móviles comenzar con Swift, Android o React?

¿Qué aplicación tiene mayores probabilidades de tener éxito (ver detalles)?

¿Hay alguna aplicación como Dropbox para Android en la que se crea una carpeta y puedo poner todos los archivos de Android que pueden cargarse en el servidor?

¿Cuál sería un buen programa de 8 a 12 semanas para aprender el desarrollo de iOS y / o Android?

Cómo obtengo material en línea para el desarrollo de aplicaciones de Android usando c ++. ¿Porque soy bueno con C ++ pero no conozco Java?

¿Debería centrarme solo en el desarrollo de iOS o también debería aprender el desarrollo de Android?

¿Qué getway de pago es mejor para la aplicación de Android en India?

¿Cuáles son las mejores computadoras portátiles de especificación en 2016 para un estudiante de CS y desarrollador de Android en India?

¿Qué le dirías a un desarrollador de Android de nivel básico basado en tus experiencias de aprendizaje?