如何关闭整个活动层次结构并显示当前任务中不存在的新活动?
上下文
考虑在启动时恢复上一个会话的FTP浏览器。每个文件夹都显示在自己的活动中。单击文件夹时,将为该文件夹启动新活动。如果我按后退按钮,应用程序将返回上一个活动,该活动对应于父文件夹。
我可以随时从菜单中注销。注销会带我进入登录活动(当应用程序恢复会话时不显示当前任务),并关闭所有其他活动。我怎么能这样做?
根据我的阅读,如果活动在当前任务中,我可以在意图中使用FLAG_ACTIVITY_CLEAR_TOP
,但这不是我的情况。
答案 0 :(得分:0)
一种方法可以使用startActivityForResult。例如,您的第一个活动是LoginActivity,后续活动是FolderActivity。所以流程将是1。 LoginActivity(启动器活动)
2.文件夹活动(root作为文件夹)
3. FolderActivity(点击文件夹的内容)......等等
所以现在使用startAcitivityForResult来启动任何新的文件夹活动。
所以现在如果用户选择使用菜单进行注销,那么活动将以相同的顺序开始完成,直到它到达LoginActivity。public class LoginActivity extends Activity { onCreate() { } onLogin() { startActivityForResult(intent, 100 /*some request code*/); //start Folder Activity, } @override onActivityResult(int requestCode, int resultCode, Intent intent) { if(requestCode == 100 && resultCode == LOGOFF_ACTION) { //sign out and show the login screen } }
public class FolderActivity extends Activity{ onCreate() { } onClickOnSomeFolder() { startActivityForResult(intent /*with folder details etc*/, 100); } @override onActivityResult(int requestCode, int resultCode, Intent intent) { if(requestCode == 100 && resultCode == LOGOFF_ACTION) { setResult(resultCode, intent); finish(); } else if(requestCode == 100 && resultCode == BACK_BUTTON) { /*No need to finish this activity*/ } } onBackButton(){ setResult(BACK_BUTTON, intent); finish(); } onLogOff(){ setResult(LOGOFF_ACTION, intent); finish(); } }
< / p>