Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo resulta un resultado de servicio a una actividad

Parece que tengo una tarea clásica, pero no puedo encontrar ningún ejemplo de cómo hacerlo.

Quiero descargar algo. Bueno, yo llamo a un servicio web y obtener una respuesta … pero es prácticamente lo mismo.

Para hacer esto tengo una actividad que inicia un servicio que genera un hilo que hace el trabajo.

Ahora me gustaría utilizar los datos que obtuve en la actividad que inició el servicio.

(Supongo que iniciar otra actividad para manejar el trabajo de mostrar el resultado sería simple)

Mi problema es cómo el servicio notifica una actividad (la que lo inició u otra) de algo?

Cualquier puntería a los ejemplos es muy apreciada.

Saludos

  • Android ContentProvider con servicios
  • Wake se bloquea servicio androide recurrente
  • Obtener java.lang.ClassCastException: android.os.BinderProxy cada vez que declaro y ejecuto dos servicios
  • ¿Puede Android Service superar el objeto de aplicación?
  • Cómo saber si mi aplicación es administrada o no
  • Android java.lang.IllegalArgumentException: Servicio no registrado
  • Android - No se pudo encontrar google-play-services_lib.apk! error
  • Servicio de Android que controla MediaPlayer
  • 3 Solutions collect form web for “¿Cómo resulta un resultado de servicio a una actividad”

    Enviar una intención de difusión con los datos a través de sendBroadcast (), que la actividad recoge con un BroadcastReceiver.

    Aquí está un ejemplo de eso: https://github.com/commonsguy/cw-android/tree/master/Service/WeatherAPI Doc: http://developer.android.com/reference/android/content/BroadcastReceiver.html

    De acuerdo con la documentación de google, si su actividad y servicio están dentro de la misma aplicación, es preferible utilizar un LocalBroadcastManager en sendBroadcast (intención) porque la información enviada no pasa por el sistema, lo que elimina el riesgo de interceptación. http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

    Es muy fácil de usar.

    En su actividad, cree un BroadcastReceiver y agregue dinámicamente un listener en el método onResume ():

    private BroadcastReceiver BReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { //put here whaterver you want your activity to do with the intent received } }; protected void onResume(){ super.onResume(); LocalBroadcastManager.getInstance(this).registerReceiver(bReceiver, new IntentFilter("message")); } protected void onPause (){ super.onPause(); LocalBroadcastManager.getInstance(this).unregisterReceiver(bReceiver); } 

    Y en tu servicio, obtienes una instancia de LocalBroadcastManager y la usas para enviar una intención. Normalmente lo pongo en su propio método como este:

     private void sendBroadcast (boolean success){ Intent intent = new Intent ("message"); //put the same message as in the filter you used in the activity when registering the receiver intent.putExtra("success", success); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } 

    Si necesita devolver varios tipos de datos, como la clase definida por el usuario, puede intentar bindService y callback. Esto puede evitar implementar interfaz sendBroadcast que sendBroadcast .

    Por favor vea el ejemplo en mi post:

    https://stackoverflow.com/a/22549709/2782538

    Y más, si utiliza IntentService , podría buscar ResultReceiver . Los detalles y la muestra se pueden encontrar en este post:

    Android: servicio de API relajante

    Espero eso ayude.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.