¿Qué sucede cuando mi actividad se destruye cuando estoy usando IntentService con ResultReceiver

He buscado a través de la red para encontrar esta respuesta. Pero no se encontró ningún resultado. Lo siento que soy un novato en la programación de Java y Android.

Quisiera ampliar mi pregunta más. Dejar decir mi actividad comenzó un IntentService y se está ejecutando independientemente en el fondo. El servicio está "suscrito" a la devolución de llamada de ResultReceiver para actualizar la IU de actividad. Y durante el servicio está ejecutando el proceso de larga ejecución, la actividad se destruye. Entonces, ¿qué pasará si el servicio envía una respuesta o actualización de progreso a la actividad a través de ResultReceiver?

Porque como sé, el ResultReceiver necesita tener una referencia de la Actividad.

En mi proyecto tengo que desarrollar una aplicación de mensajería de video clip. Que cuando el usuario capturó el video, pasará los datos al servicio y el servicio realizará subir, así como guardar alguna información en db .. mientras mantiene la publicación de la actualización de progreso a la actividad de la interfaz de usuario a través de ResultReceiver.

El usuario es capaz de salir o matar a la actividad como les gusta. Pero cuando regresan a la aplicación / Actividad, si la carga / descarga sigue en curso, debe mostrar el progreso actual.

Al principio pienso en Asynctask, pero también está teniendo el problema similar como mencioné. Necesita una referencia de la actividad de la persona que llama.

¿Hay algún lugar donde pueda cumplir el requisito que he mencionado? Lo siento por el largo post. Espero que alguien me pueda iluminar un poco y es incluso mejor tener algún fragmento de código. Muchas gracias 🙂

Edit: En resumen, ¿existe una manera de enlazar dinámicamente una actividad recién creada a un IntentService en ejecución para que el servicio pueda enviar la actualización de progreso a la Actividad correcta?

Utilice un BroadcastReceiver en su actividad y registre / onResume() su registro en onResume() y onPause() respectivamente. Puede utilizar un IntentFilter para escuchar una Intent de su IntentService .

En su IntentService , cree un valor de acción para el IntentFilter y envíe una transmisión con esa acción cuando desee actualizar:

 public static final String ACTION = "com.example.yourapp.action.ACTION_TAG"; private void handleResult() { if (BuildConfig.DEBUG) { Log.v(TAG, "handleResult"); } // Broadcast result Intent intent = new Intent(ACTION); intent.putExtra("your_extra", someValue); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } 

En su Activity :

 private BroadcastReceiver mYourReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (BuildConfig.DEBUG) { Log.v(TAG, "onReceive"); } Bundle bundle = intent.getExtras(); if (bundle != null) { // Update with content from bundle } } }; @Override public void onResume() { super.onResume(); if (BuildConfig.DEBUG) { Log.v(TAG, "onResume"); } // Register broadcast receiver LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mYourReceiver, new IntentFilter(YourIntentService.ACTION)); } @Override public void onPause() { super.onPause(); if (BuildConfig.DEBUG) { Log.v(TAG, "onPause"); } // Unregister broadcast receiver LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mYourReceiver); } 
  • Cómo matar un hilo y un controlador antes de ir a una nueva actividad
  • Cordova plugin bloqueo de hilo
  • android esperando respuesta del servidor
  • Cómo utilizar std :: this_thread :: yield () deterministically?
  • NullPointerException: lock == null
  • Default Schedulers para rxjava en Android
  • Android finaliza el subproceso en el servicio y la actualización de la interfaz de usuario
  • Cómo evitar que la aplicación de Android se bloquee debido a la excepción en el hilo de fondo?
  • ¿Cómo configurar el nombre del hilo?
  • Limitar el rendimiento con RxJava
  • Matando un hilo en java android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.