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í.