Señal / evento AboutToQuit en Android

Soy nuevo en Java y Android y vengo de un background de Qt/C++ . En Qt hay este object QCoreApplication que representa la aplicación completa y cuando se destruye este object, la aplicación muere. En Qt hay esta señal en QCoreApplication que es QCoreApplication::aboutToQuit que se emite cuando la aplicación está en un process inminente de cierre. Esto es muy útil cuando lo desee, por ejemplo, guarde los datos de configuration en el disco justo antes de que se cierre la aplicación.

Mi pregunta: ¿existe un mecanismo similar a aboutToQuit similar con el que se pueda recibir una notificación cuando una aplicación de Android se cierre inminentemente?

EDITAR:

Me gustaría hacer algunas adiciones a mi pregunta después de la respuesta nPn . No podemos confiar en el ciclo de vida de la actividad de Android ya que necesitamos esta información en una biblioteca / SDK que estamos desarrollando. Entonces, queremos que nos avisen cuando se cierre una aplicación que está utilizando nuestra biblioteca / SDK.

Estamos desarrollando un SDK para que algunos clientes lo utilicen en aplicaciones de Android . Al igual que esto no sería suficiente, este SDK también usa un SDK nativo de C++ SDK en el background con el que está vinculado a través de una interfaz JNI .

El objective final es recibir una notificación en C ++ de que la aplicación se está destruyendo en Android. Tener un evento / señal en Android sería suficiente ya que podríamos reenviar la información a C ++.

Así que, como resumen, las capas son: Aplicación de Android -> Android SDK personalizado -> Native C ++ SDK

Si hay algo poco claro, voy a editar la cuestión aún más

Echa un vistazo al Ciclo de vida de la actividad de Android aquí

La forma en que funciona Android es, en lugar de recibir una señal, que implementa / anula uno o más de los methods del ciclo de vida, que recibe llamadas en varias fases. Para la configuration, es posible que desee utilizar onPause()

También hay devoluciones de llamadas a nivel de aplicación y la posibilidad de registrar sus propias devoluciones de llamada, pero todas están vinculadas al ciclo de vida.

Si su problema es que simplemente no desea que el desarrollador de la aplicación tenga que agregar código a un método de ciclo de vida, siempre tiene la opción de crear subclasss y agregar su propio código antes / después de llamar al método de superclass.

Estaba leyendo sobre algunos de los últimos desarrollos (no he estado haciendo demasiada progtwigción de Android últimamente y quería aprender más sobre la nueva Arquitectura recomendada).

Cuando leí lo siguiente, pensé en esta pregunta desde hace unos días.

Los componentes de Lifecycle-aware realizan acciones en respuesta a un cambio en el estado del ciclo de vida de otro componente, como actividades y fragments. Estos componentes lo ayudan a producir un código mejor organizado y, a menudo, de menor peso, que es más fácil de mantener.

Un patrón común es implementar las acciones de los componentes dependientes en los methods del ciclo de vida de actividades y fragments. Sin embargo, este patrón conduce a una organización deficiente del código y a la proliferación de errores. Mediante el uso de componentes compatibles con el ciclo de vida, puede mover el código de componentes dependientes fuera de los methods del ciclo de vida y hacia los componentes mismos.

Creo que si algún componente de tu biblioteca puede implementar la interfaz LifeCycleObserver , no necesitarás depender de las devoluciones de llamadas en las actividades, fragments, etc., sino que podrías observar los cambios en tus propios objects y reactjsr en consecuencia.

Por ejemplo, si crea una class que implemente LifecycleObserver , como esta.

 class LifeCycleMonitor(private val lifeCycleOwner: LifecycleOwner) : LifecycleObserver { init { lifeCycleOwner.lifecycle.addObserver(this) } @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) fun onDestroyEvent() { println("activity was destroyed") } } 

y luego instanciar la class en un object que sea un LifecycleOwner (como una Actividad) se llamará al método anotado con el evento correspondiente.

 class MainActivity : AppCompatActivity() { private val lifeCycleMonitor = LifeCycleMonitor(this) } 

Tenga en count que también hay un ProcessLifecycleOwner que podría estar aún más cerca de lo que está buscando, ya que cubre toda la aplicación, no solo una actividad o fragment dado.

  • Dagger2 error: Kotlin: reference no resuelta: DaggerSOMBREMENTE componente
  • Sin setter / getter para objects Firebase
  • Por qué la class Kotlin ya no necesita abrirse en Spring Boot
  • kotlin coroutine y la relación entre el manejador principal
  • Ejemplo de Kotlin foreachblock
  • ¿Es posible express kotlin 'con' método equivalente en Scala?
  • ¿Hay alguna manera de escribir una function de extensión que cambie el valor del object?
  • Revertir el código fuente a Java después de la conversión Kotlin> Java de IntelliJ
  • ¿Cómo configurar la versión de Kotlin en Android Studio?
  • KotlinNullPointerException: inside onCreateOptionsMenu no puede encontrar searchView; android
  • Conversión de Kotlin a error de Javascript: "restar no es una function"