Android: open activity without save into the stack

前端 未结 10 1873
暗喜
暗喜 2020-11-27 04:19

I have 2 activities: Main and List.

From Main you can open List; from List you can open Main.

I\'d like it so that every opening of List does not

相关标签:
10条回答
  • 2020-11-27 05:21

    When starting your list's Activity, set its Intent flags like so:

    Intent i = new Intent(...); // Your list's Intent
    i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY); // Adds the FLAG_ACTIVITY_NO_HISTORY flag
    startActivity(i);
    

    The FLAG_ACTIVITY_NO_HISTORY flag keeps the new Activity from being added to the history stack.

    NB: As @Sam points out, you can use i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); instead. There is no functional difference.

    0 讨论(0)
  • 2020-11-27 05:22

    Use the new task with clearing. This worked in my case when the other options didnt.

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    

    Clear the entire history stack and start a new activity on Android

    0 讨论(0)
  • 2020-11-27 05:22

    In my particular case FLAG_ACTIVITY_NO_HISTORY did not work. Neither did FLAG_ACTIVITY_NEW_TASK or FLAG_ACTIVITY_CLEAR_TASK alone by themselves work.

    However FLAG_ACTIVITY_NEW_TASK and FLAG_ACTIVITY_CLEAR_TASK together did work.

    Intent intent = new Intent(FooActivity.this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);
    
    0 讨论(0)
  • 2020-11-27 05:22

    Can you not override the back button on the particular activity to stop the 'return' functionality?

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
    
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    
    0 讨论(0)
提交回复
热议问题