次のような起動フローを持つアプリケーションがあります。
StartupActivity -> LoginDialog -> LoginActivity -> HomeActivity
LoginActivity から HomeActivity に移動すると、次のように呼び出します。
Intent intent = new Intent( this, HomeActivity.class );
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
{
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );
}
else
{
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
}
startActivity( intent );
finish();
On >= API 11、これにより、HomeActivityがまったく新しいタスクになり、StartupActivityがバックスタックになくなります。
ただし、 ではAPI <= 10、 はをバック スタックからFLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOPクリアしますが、はまだそこにあります。ユーザーが から戻るをクリックすると、 に戻ります。LoginActivityStartupActivityHomeActivityStartupActivity
バックスタックから StartupActivity をクリアするにはどうすればよいですか?
- 私の調査から、最良の方法は startActivityForResult() のようですが、ダイアログからそれを行うことはできますか? 誰が結果を得るのですか?
まとめ:
- から
StartupActivity、 を示しますLoginDialog。 - から、バック スタックをクリアせず
LoginDialogに に移動します。LoginActivity- これは、ユーザーが から に戻れるようにする
LoginActivityためStartupActivityです。
- これは、ユーザーが から に戻れるようにする
- から
LoginActivityに移動しHomeActivity、バック スタックをクリアします。 StartupActivity戻るを押すと、オンに戻りますdevices <= API 10