次のような起動フローを持つアプリケーションがあります。
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
クリアしますが、はまだそこにあります。ユーザーが から戻るをクリックすると、 に戻ります。LoginActivity
StartupActivity
HomeActivity
StartupActivity
バックスタックから StartupActivity をクリアするにはどうすればよいですか?
- 私の調査から、最良の方法は startActivityForResult() のようですが、ダイアログからそれを行うことはできますか? 誰が結果を得るのですか?
まとめ:
- から
StartupActivity
、 を示しますLoginDialog
。 - から、バック スタックをクリアせず
LoginDialog
に に移動します。LoginActivity
- これは、ユーザーが から に戻れるようにする
LoginActivity
ためStartupActivity
です。
- これは、ユーザーが から に戻れるようにする
- から
LoginActivity
に移動しHomeActivity
、バック スタックをクリアします。 StartupActivity
戻るを押すと、オンに戻りますdevices <= API 10