android esperando respuesta del servidor

decir que quiero realizar una solicitud Http desde el servidor, este proceso lleva tiempo.

ahora debido a esto, la solicitud http debe ejecutarse en un hilo diferente (AsyncTask, Runnable, etc.)

pero a veces sólo necesito la respuesta cuando lo pido, para actualizar la interfaz de usuario

usando Thread.sleep en un bucle para esperar la respuesta no es buen rendimiento

ejemplo: Quiero el nombre del usuario, le pregunto al servidor por él, y tengo que esperarlo ahora la actividad llama al UserManager que llama al manejador del servidor que realiza la operación y devuelve el resultado

tal vez un sistema de eventos está en orden, pero no estoy seguro de cómo hacer esto en mi scenerio y francamente estoy muy confundido sobre este tema

por favor ayuda a alguien

Esto se puede hacer con w / AsyncTask … Manejar la solicitud de red en doInBackground() y una vez doInBackground() ha terminado, onPostExecute() se activa en el hilo de la interfaz de usuario y es ahí donde puede ejecutar cualquier código que actualizará los elementos de la interfaz de usuario .

Si necesita algo un poco más genérico y reutilizable, probablemente desee implementar una devolución de llamada … Me referiré al hilo de la interfaz de usuario como el cliente y el AsyncTask como el servidor .

  1. Cree una nueva interfaz y cree algunos stubs de método.

     public interface MyEventListener { public void onEventCompleted(); public void onEventFailed(); } 
  2. Haga que su cliente pase la instancia de MyEventListener al servidor. Una manera típica de hacer esto es hacer que su cliente implemente la interfaz (MyEventListener) y se pase al servidor.

     public class MyActivity implement MyEventListener { public void startEvent() { new MyAsyncTask(this).execute(); } @Override public void onEventCompleted() { // TODO } @Override public void onEventFailed() { // TODO } } 
  3. En el onPostExecute del servidor, compruebe si la devolución de llamada es null y llame al método apropiado.

     public class MyAsyncTask extends AsyncTask<Void, Void, Void> { private MyEventListener callback; public MyAsyncTask(MyEventListener cb) { callback = cb; } [...] @Override protected void onPostExecute(Void aVoid) { if(callback != null) { callback.onEventCompleted(); } } } 

Puede leer más acerca de devoluciones de llamada aquí: http://www.javaworld.com/javaworld/javatips/jw-javatip10.html

  • Limitar el rendimiento con RxJava
  • Fragmentos e hilos en Android
  • ¿Cuál es la diferencia entre Thread.run () y Handler.post () y Service en Android?
  • ¿Por qué el AsyncTask de mi servicio bloquea AsyncTasks de la actividad principal?
  • ContentProvider insert () siempre se ejecuta en el hilo de interfaz de usuario?
  • IllegalArgumentException en unlockCanvasAndPost (fondo de pantalla en vivo Android)
  • ¿La publicación de Runnable a un hilo de interfaz de usuario garantiza que el diseño esté terminado cuando se ejecuta?
  • Cómo utilizar AsyncTask
  • ¿Por qué los servicios de android se ejecutan en el hilo de la interfaz de usuario?
  • PARTIAL_WAKE_LOCK vs SCREEN_DIM_WAKE_LOCK en el subproceso de descarga
  • Acceso de dominio a través de subprocesos con rxjava y dagger2
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.