在Android开发中给我们会遇到一个问题.
举个栗子,比如登录页面 我在个人中心页面跳转到A页面让用户输入账号,B页面输入密码,C页面登录,虽然市面上不会有这么脑残的App,所以说我们只是举一个栗子.
可能直接上图会更加形象一点.
,
,
比如我在个人中心页面跳转到A页面,输入完账号之后,到B页面,用户到了B页面,发现A页面的账号输入错误了,要返回,所以我在A跳B的时候就不能将A页面销毁,在B页面的,输入完毕密码之后,跳转到C页面去登录,当然登录完毕之后要回到个人中心页面,但是现在我们的输入账号的A页面还没有销毁,直接finish掉C页面的话会回到A页面.就达不到我们的初衷了.
public class DestroyActivityUtil {
private static Map<String, Activity> destoryMap = new HashMap<>();
//将Activity添加到队列中
public static void addDestoryActivityToMap(Activity activity, String activityName) {
destoryMap.put(activityName, activity);
}
//根据名字销毁制定Activity
public static void destoryActivity(String activityName) {
Set<String> keySet = destoryMap.keySet();
LogUtil.i(keySet.size());
if (keySet.size() > 0) {
for (String key : keySet) {
if (activityName.equals(key)) {
destoryMap.get(key).finish();
}
}
}
}
}
添加方法
DestroyActivityUtil.addDestoryActivityToMap(SubmitTaskResultActivity.this, "SubmitTaskResultActivity");
销毁方法
DestroyActivityUtil.destoryActivity("SubmitTaskResultActivity");
之前用的是静态赋值,然后直接调用静态的会造成内存泄漏
现在好了,改成这种方式,,这样就可以将指定的Activity销毁了