Flag_activity_clear_task flag_activity_single_top

These are only required if you need to customise the behaviour of your activities, in most cases you might not need these.

Members

BROUGHT_TO_FRONT

CLEAR_TASK

CLEAR_TOP

CLEAR_WHEN_TASK_RESET

EXCLUDE_FROM_RECENTS

FORWARD_RESULT

LAUNCHED_FROM_HISTORY

LAUNCH_ADJACENT

MATCH_EXTERNAL

MULTIPLE_TASK

NEW_DOCUMENT

NEW_TASK

NO_ANIMATION

NO_HISTORY

NO_USER_ACTION

PREVIOUS_IS_TOP

REORDER_TO_FRONT

RESET_TASK_IF_NEEDED

RETAIN_IN_RECENTS

SINGLE_TOP

TASK_ON_HOME

Copyright 2020 - 2021 © Invertase Limited

  • GitHub
  • Contact
  • Frequently Asked Questions

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License and code samples are licensed under the Apache 2.0 License.

All product names, logos, and brands are property of their respective owners. All company, product and service names used in this website are for identification purposes only. Use of these names, logos, and brands does not imply endorsement.

Looks like every tutorial that we have got out there on the web mentions that FLAG_ACTIVITY_NEW_TASK starts a new task if the activity we are starting is not currently running in the task.But it seems that using FLAG_ACTIVITY_NEW_TASK doesn’t Creates a new task always, it is only creating a new task if there is no task available for the activity we need to run like when we start an activity from a BroadCastReceiver using the context inside onReceive() .

According to the all the tutorials on the web,

Suppose we have got following activities in our backStack-

A->B->C

Now If We want to start a new Activity D, then it should start in a New Task, but this doesn’t seems to happens and the activity D is Started in the Same task and we have out final backstack

A->B->C->D

AnyOne Who Can Clarify?

I know setting taskAffinity will force to create a new task but this brings another problem:

Try Yourself:

Suppose we launch two Activity:

A-B

Then again we launch one other Activity with android:taskAffinity**,So now we have got**

A-B | C
A-B (on the same task)
C (on other task)

Now Again We start

A->B->C->D

0 ,So now our BackStack will Look like:

A-B|C-A-B
A-B(on the same task)
C-A-B(on other task)

Now, the problem is If We will Again try to start C from B (from task C-A-B), nothing happens and C will not get launch (I din’t know why?) Here’s a gif showing the problem…

Flag_activity_clear_task flag_activity_single_top


At August 30, 2018, 9:31pm, mmurphy replied:

Without code, it is difficult to comment on what your code does.

I know setting taskAffinity will force to create a new task

No, it just sets the task affinity. Whether a task is created depends on whether that task already exists or not at the time you start the activity.

Now, the problem is If We will Again try to start C from B (from task C-A-B), nothing happens and C will not get launch (I din’t know why?)

Again, without code, it is difficult to comment.

Tasks are one of the most arcane areas of Android UI development, so I’m not surprised that you are encountering problems. Personally, outside of very specific scenarios, I try to avoid task management entirely.

I am sorry that I cannot provide much help as it stands. If you want help with what your code is doing, I would need to be able to see that code.


At August 31, 2018, 4:03am, hackzcorporation replied:

@mmurphy

Tasks are one of the most arcane areas of Android UI development, so I’m not surprised that you are encountering problems. Personally, outside of very specific scenarios, I try to avoid task management entirely.

I agree with you, it is one of the most confusing thing i have ever encountered with.

For past 4 days i’m just bashing my head into the walls, every time it looks like now i understand how tasks are working one more problem arises and i remain stuck there.Please look at the source code and try to help me with task management. https://we.tl/t-gG0qiZMn79


At August 31, 2018, 11:55am, mmurphy replied:

Your code seems focused on the second scenario from your original question. I am not completely certain what your overall business rules are for what should be going on with your activities outside of these experiments. So, here are two patterns that work:

  • If you want C to always be in a new task, remove its

    A->B->C->D

    1 and start it with

    A->B->C->D

    2. B will always launch C in a new task, though this will add new tasks for each such launch (since the decision of whether to launch C in a new task is hard-coded in your app).
  • If you want C, and activities launched by C, to be in a separate task, use

    A->B->C->D

    1, but then only start C in a new task the first time. Second and subsequent times, either use

    A->B->C->D

    4 to bring the existing C instance to the foreground, or use no flags to create a new C instance on this other task. This will require you to track some state, to know whether C should be started with FLAG_ACTIVITY_NEW_TASK or not.

                Intent intent= new Intent(SecondActivity.this,ThirdActivity.class);
                if (launchedAlready) {
                    // use intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); if you want to reuse the existing C instance
                }
                else {
                    launchedAlready = true;
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                }
                startActivity(intent);

For finer-grained control over the sequence of events, have only one activity, and use fragments to represent the different screens. This is Google’s long-term direction with Jetpack, as seen with things like the Navigation component.

What does Flag_activity_clear_task do?

API 11 or greater, FLAG_ACTIVITY_CLEAR_TASK and FLAG_ACTIVITY_NEW_TASK flags on Intent to clear all the activity stack.

What is Flag_activity_clear_top?

FLAG_ACTIVITY_CLEAR_TOP. If the activity already exists, all of the activities above it will be destroyed. For itself, will be destroyed and recreated.

What does Flag_activity_new_task do?

launchMode — singleTask | flag — FLAG_ACTIVITY_NEW_TASK: If an Activity do not exist in an already created Task, then it starts the Activity in a new Task with Activity's new instance at the root of the Task's back stack, else the Task is brought forward with the Activity's last state restored and this Activity ...

How do you clear all background activity on Android?

Close all apps: Swipe up from the bottom, hold, then let go. Swipe from left to right. On the left, tap Clear all. Close all apps on Android Go: Swipe up from the bottom, hold, and let go.