Одним из подходов может быть использование startActivityForResult. Так, например, ваше первое действие - LoginActivity, а последующие действия - FolderActivity. Таким образом, поток будет
1. LoginActivity (активность запуска)
2. Активность папки (root как папка)
3. FolderActivity (нажал на содержимое папки) ... и т. Д.
поэтому теперь используйте startAcitivityForResult для запуска любой новой операции с папками.
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
}
}</p>
<p>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();
}
}
Так что теперь, если пользователь решит выйти из меню, тогда действия начнут завершаться в том же порядке, пока не достигнут LoginActivity.