¿Cómo podemos utilizar Activity.finishActivity(REQUEST_CODE) si onActivityResult está obsoleto?
Quiero utilizar la nueva forma de iniciar una actividad y obtener el resultado de vuelta porque Activity.startActvityForResult
está obsoleto. Actualmente, funciona bien.
private val activityLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
if (it.resultCode == "SOME_CODE") {
//Hacer algo
}
}
Para iniciar la actividad, solo necesitamos llamar al método de inicio.
activityLauncher.launch(YOUR_INTENT)
El problema es que quiero cerrar todas las actividades que se iniciaron con el mismo código de solicitud utilizando Activity.finishActivity(REQUEST_CODE).
¿Cómo podemos hacer eso de esta nueva manera?
NOTA: No puedo utilizar Activity.FLAGACTIVITYCLEAR_TOP porque quiero volver a la pantalla principal sin llamar a una nueva solicitud de servicio. Solo quiero recargar una actividad desde la pila de actividades.
Gracias y disfruta tu vida.
davy.ai
Desafortunadamente, la nueva forma de iniciar una actividad usando ActivityResultContracts no ofrece una manera fácil de cerrar todas las actividades iniciadas con el mismo código de solicitud. Esto se debe a que la interfaz ActivityResultLauncher no proporciona una manera de acceder al código de solicitud.
Una solución posible es realizar un seguimiento del código de solicitud usted mismo y usarlo para finalizar manualmente las actividades. Podría crear un mapa que asocie cada código de solicitud con una lista de actividades iniciadas con ese código, y luego usar este mapa para finalizar las actividades cuando sea necesario.
Por ejemplo:
Con esta solución, puede llamar a
launchActivity
para iniciar una actividad con un código de solicitud específico, y usarfinishActivities
para finalizar todas las actividades iniciadas con el mismo código.Tenga en cuenta que debería agregar algunas comprobaciones de errores para manejar casos en los que el código de solicitud no es válido o no hay actividades en la lista.