Android 开发 启动activity并且将前面activity全部清空
方法一:
Intent intent = new Intent(A.this,B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
startActivity的时候传递FLAG_ACTIVITY_CLEAR_TASK这个标志,那么这个标志将会清除之前所有已经打开的activity.然后将会变成另外一个空栈的root,然后其他的Activitys就都被关闭了.这个方法必须跟着{@link #FLAG_ACTIVITY_NEW_TASK}一起使用.
一定要和FLAG_ACTIVITY_NEW_TASK一起使用!
方法二:
Intent intent = new Intent(context,PLoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(intent);
注意这里使用的是addFlags(); 二者的区别是setFlags();会清空原有的Flags设置新的Flags,而addFlags则是添加新的Flags
方法三:
/** *@content:活动结束管理类 *@time:2019-1-29 *@build: */ public class ActivityFinishUtil { private static List<Activity> activityList = new ArrayList<>(); public static void addActivity(Activity activity){ activityList.add(activity); } public static void removeActivity(Activity activity){ activityList.remove(activity); } public static void finishOtherAllActivity(Activity activity){ for (Activity item : activityList){ if (item == activity){ continue; } item.finish(); } } public static void finishAllActivity(){ for (Activity item : activityList){ item.finish(); } } }
此方法只需要在你的基础Activity的onCreate和onDestroy添加对应方法
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayout()); ActivityFinishUtil.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityFinishUtil.removeActivity(this); }