私はこれの使用についていくつかの投稿を読みましたが、それが私のために機能していないので何かが欠けているに違いありません。私のアクティビティAのマニフェストにはlaunchmode = "singleTop"があります。アクティビティBをlaunchmode = "singleInstance"で開始します。アクティビティBはブラウザを開き、受信してインテントバックします。これがsingleInstanceである理由です。ユーザーがアクティビティAに戻されるように、戻るボタンをオーバーライドしようとしています。その後、アクティビティBに戻るのではなく、戻るを押してアクティビティを終了できます。
// activity B
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) onBackPressed();
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
startActivity(new Intent(this, UI.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
return;
}
ブラウザから戻った後、スタックは... A、B、Browser、B
このコードによってスタックが... A ...に変更され、もう一度押すとユーザーがホーム画面に戻ると思います。
代わりに、スタックを... A、B、Browser、B、A ...それらのフラグがないかのように変更しているようです。
startActivityの後にアクティビティBでfinish()を呼び出そうとしましたが、戻るボタンを押すと再びブラウザに戻ります。
何が足りないのですか?ありがとうございました!
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
まさにそれを行います。