Tôi đã đọc qua một số bài viết về việc sử dụng cái này, nhưng phải thiếu một cái gì đó vì nó không hoạt động với tôi. Hoạt động A của tôi có Launcmode = "singleTop" trong tệp kê khai. Nó bắt đầu hoạt động B, với launcmode = "singleInstance". Hoạt động B mở một trình duyệt và nhận và có ý định trở lại, đó là lý do tại sao nó là singleInstance. Tôi đang cố gắng ghi đè nút quay lại để người dùng được đưa trở lại hoạt động A và sau đó có thể nhấn Quay lại để rời khỏi hoạt động, thay vì quay lại hoạt động B một lần nữa.
// 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;
}
Sau khi quay lại từ trình duyệt, ngăn xếp là ... A, B, Trình duyệt, B
Tôi hy vọng mã này sẽ thay đổi ngăn xếp thành ... A ... để việc nhấn lại một lần nữa sẽ đưa người dùng trở lại Màn hình chính.
Thay vào đó, nó dường như thay đổi ngăn xếp thành ... A, B, Trình duyệt, B, A ... như thể những cờ đó không có ở đó.
Tôi đã thử gọi finish () trong hoạt động B sau startActivity, nhưng sau đó nút quay lại đưa tôi quay lại trình duyệt một lần nữa!
Tôi đang thiếu gì? Cảm ơn bạn!
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
sẽ làm điều đó.