做一个Android App项目,需要点击App注销按钮实现注销功能。
方法:
1 设置LoginActivity为启动Activity,即该Activity在App Task的栈底。
2 在注销按钮所在Activity处,如下方式启动LoginActivity:
getActivity().startActivity(new Intent(getActivity(), LoginActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
注意:Manifest中, LoginActivity不能静态设置:android:launchMode="singleTask"。否则,注销功能实现了,但是,在桌面点击App图标,会清空当前Task的工作状态的Activity。
理解Android的Task。
TargetActivity不是LoginActivity(不在栈底)时,销毁TargetActivity栈下所有Activity的方法:
我们知道intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);这个方法是把要启动的activity在activity堆栈中上面所有activity给清空。如何将ActivityA在所在堆栈中下面所有的Activity清空?采取了一个比较笨的方法是先启动当前Task堆栈最下面的Activity A并且带上参数intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);。然后再启动我想要的ActivityB,并且finish掉当前最底端的activityA。各位谁有更好的方法?