Eliminar la actividad especificada en el desarrollo de Android

experiencia técnica

En el desarrollo, a menudo nos encontramos con un requisito de este tipo: página de inicio - "página de entrada de cuenta -" página de entrada de contraseña - "página de inicio de sesión. Cuando vayamos a la página de inicio de sesión e inicie sesión, llegaremos a la página de inicio. Esta vez, cuando presionamos el botón Atrás, no queremos ser transferidos a la página de la contraseña o la cuenta. En este momento, necesitamos una técnica: eliminar una actividad específica en un momento específico. ir al grano, publicar la imagen.

Principio técnico

Escriba a mano un grupo de administración de actividades estático usted mismo, administre la actividad iniciada y elimínela como desee.

Peinado de código

Paso 1: encapsular una clase CatchActivity
package com.example.treetest.utils;

import android.app.Activity;

import java.util.ArrayList;
import java.util.List;

public class CatchActivity {
    //设置一个用来装 已开启 activity 容器
    public static List<Activity> activityList = new ArrayList<>();

    //判断容器中是否已存在改 activity,不存在则添加
    public static void addActivity(Activity activity){
        if (!activityList.contains(activity)){
            activityList.add(activity);
        }
    }

    //删除所有 activity
    public static void finishAllActivity(){
        for (Activity temp: activityList){
            temp.finish();
        }
    }

    //删除指定 activity
    public static void finishSingleActivity(Activity activity){
        if (activity != null){
            if (activityList.contains(activity)){
                activityList.remove(activity);
            }
            activity.finish();
        }
    }

    //删除指定activity 通过类名
    public static void  finishSingleActivityByClass(Class<?> cls){
        Activity tempActivity = null;
        for (Activity temp : activityList){
            if (temp.getClass().equals(cls)){
                tempActivity = temp;
            }
        }
        finishSingleActivity(tempActivity);
    }
}

 Paso 2: Llame a onCreate () en la actividad que debe administrarse  

        //往 Activity静态管理池中添加
        if(!CatchActivity.activityList.contains(this)){
            CatchActivity.addActivity(this);
        }

Paso 3: seleccione un "buen día" para eliminar la actividad especificada

        //删除 静态activity管理池
        CatchActivity.finishSingleActivityByClass(TestActivity.class);
        CatchActivity.finishSingleActivityByClass(TestTireInfoActivity.class);
        CatchActivity.finishSingleActivityByClass(ShowDataActivity.class);

para resumir

En este punto, ha controlado completamente la Actividad.

Nota: intente no usar finishAllActivity () porque aunque la actividad ha terminado (), todavía hay actividades correspondientes en la activityList, ¡úsela con precaución! ! ! Puede usarlo, simplemente optimice el código usted mismo, ¡no lo explicaré aquí! ! !

Simplemente finja que no puede verlo: puede hacer un bucle sin sintaxis avanzada en finishAllActivity (), simplemente use el bucle con las variables i, deténgase aquí.

Supongo que te gusta

Origin blog.csdn.net/qq_41885673/article/details/114045039
Recomendado
Clasificación