How to manage activity stack?

自闭症网瘾萝莉.ら 提交于 2019-12-09 15:26:54

问题


When my stack is in this situation:

A->B->C

if I start D activity, I want that the activity stack becomes:

A->D

Note that activity C is a dialog.


回答1:


here are the steps which will do the needed:

  • from activity C launch the activity A with a boolean fromActivityC bundled with the intent and the flag FLAG_ACTIVITY_CLEAR_TOP set .
  • Now in the on create of the activity A check for this boolean "fromActivityC" first and if present launch the activity D else the normal flow continues.

    // following code can be used to get the boolean in the oncreate
    boolean entrypoint=this.getIntent().getExtras().getBoolean("fromActivityC");
    

A lil workaround but Hope it helps




回答2:


There is several way to remove a activity from the stack or prevent it to be stacked :

To remove your activity from the stack , simply call finish(), see here.

You can also implement in your manifest the property : android:noHistory="true" which prevent an activity to be stacked.

See this question form more detail : Removing an activity from the history stack




回答3:


A little hacky, but you could start activity A while clearing the stack, then start activity D.

Activity A might appear for a moment before disappearing though




回答4:


You could try finishing ActivityB when you launch ActivityC and the same in ActivityC when launching A.

Your code would look like this:

Intent i = new Intent(this.class.ActivityC);
startActivity(i);
ActivityB.finish();



回答5:


on callback of C , pass a message back to A and start your D from Acall finish , this will finish B and C (because C is apart of B).




回答6:


here is a better solution not depending on evaluating the Intent content in A: use the flag FLAG_ACTIVITY_TASK_ON_HOME

you should also take a look at the other flags Android Intent



来源:https://stackoverflow.com/questions/6369918/how-to-manage-activity-stack

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!