Salga de los programas de Android en cualquier momento y en cualquier lugar

Salga de los programas de Android en cualquier momento y en cualquier lugar

Suponiendo tal escenario, abre varias páginas de una aplicación.

En este punto, desea cerrar este programa, presiona la tecla de retorno, el resultado solo regresa a la última página abierta (Actividad).

Debe seguir presionando la tecla de retorno hasta que la pila de retorno esté vacía para salir del programa.

A veces, necesitamos presionar la tecla de retorno en una página determinada para salir directamente del programa, por lo que se puede realizar de la siguiente manera.

Implementación

1. Administrador de actividad de la clase Singleton

Cree un ActivityManager de clase singleton.

Esta clase se usa para administrar instancias de actividad, por lo que solo puede haber una instancia en todo el entorno.

object ActivityManager {
    
    
    private val activities = ArrayList<Activity>()
    fun addActivity(activity: Activity) {
    
    
        activities.add(activity)
    }

    fun removeActivity(activity: Activity) {
    
    
        activities.remove(activity)
    }

    fun finishAll() {
    
    
        for (activity in activities) {
    
    
            if (!activity.isFinishing) {
    
    
                activity.finish()
            }
        }
        activities.clear()
    }
}

La descripción del código es la siguiente

  • Las actividades se utilizan para administrar todas las actividades en la pila de devolución.
  • addActivity() se usa para agregar actividad a las actividades
  • removeActivity() se usa para eliminar la actividad de las actividades
  • finishAll() se usa para cerrar todas las actividades

2. Actividad Base

Cree una clase BaseActivity de Kotlin que herede de AppCompatActivity.

Llame al método addActivity() de ActivityManager en el método onCreate()

Llame al método removeActivity() de ActivityManager en el método onDestory()

open class BaseActivity :AppCompatActivity() {
    
    
    override fun onCreate(savedInstanceState: Bundle?) {
    
    
        super.onCreate(savedInstanceState)
        ActivityManager.addActivity(this)
    }

    override fun onDestroy() {
    
    
        super.onDestroy()
        ActivityManager.removeActivity(this)
    }
}

3. Modificar la clase heredada

Para cambiar la instancia de actividades en ActivityManager cuando se crea y destruye cada clase

Cambie la clase de herencia de cada Actividad de AppCompatActivity a BaseActivity

Supongo que te gusta

Origin blog.csdn.net/jiaweilovemingming/article/details/124640864
Recomendado
Clasificación