自己手写一个静态的 Activity 管理池,把已启动的 Activity 管理起来,在需要删除的地方删除掉
第一步:封装一个 CatchActivity 类
import android.app.Activity;
import com.aostarit.smcrypto.exception.InvalidSourceDataException;
import java.util.ArrayList;
import java.util.Iterator;
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,Iterator<Activity> it_b){
it_b.remove();
activity.finish();
}
//删除指定activity 通过类名
public static void finishSingleActivityByClass(Class<?> cls){
Activity tempActivity = null;
Iterator<Activity> it_b=activityList.iterator();
while(it_b.hasNext()){
Activity temp=it_b.next();
if (temp.getClass().equals(cls)){
tempActivity = temp;
}
finishSingleActivity(tempActivity,it_b);
}
}
}
第二步:在需要管理的 Activity 里的 onCreate() 里调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//往 Activity静态管理池中添加
if(!CatchActivity.activityList.contains(this)){
CatchActivity.addActivity(this);
}
}
第三步:在需要的地方删除指定Acitivity
//删除TestActivity,否则退出程序后,它又跳到TestActivity
CatchActivity.finishSingleActivityByClass(TestActivity.class);
//这里 是我的 程序退出
//结束程序
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
System.exit(0);
}
}, 1000);