나는 이것을 사용하는 것에 대한 여러 게시물을 읽었지만 나를 위해 작동하지 않기 때문에 무언가를 놓치고 있어야합니다. 내 활동 A는 매니페스트에 launchmode = "singleTop"이 있습니다. launchmode = "singleInstance"로 활동 B를 시작합니다. 활동 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
그렇게하겠습니다.