Android singleTask or singleInstance launch mode? [closed]

From the Application Fundamentals page of the Android dev guide:

By default, all the activities in an
application have an affinity for each
other — that is, there’s a preference
for them all to belong to the same
task.

A “singleInstance” activity stands
alone as the only activity in its
task. If it starts another activity,
that activity will be launched into a
different task regardless of its
launch mode — as if
FLAG_ACTIVITY_NEW_TASK was in the
intent. In all other respects, the
“singleInstance” mode is identical to
“singleTask”.

As noted above, there’s never more
than one instance of a “singleTask” or
“singleInstance” activity, so that
instance is expected to handle all new
intents. A “singleInstance” activity
is always at the top of the stack
(since it is the only activity in the
task), so it is always in position to
handle the intent. However, a
“singleTask” activity may or may not
have other activities above it in the
stack. If it does, it is not in
position to handle the intent, and the
intent is dropped. (Even though the
intent is dropped, its arrival would
have caused the task to come to the
foreground, where it would remain.)

4 Activities in a Task

Since there is never more than one instance of the Activity with either launch mode, the back button will always take you to the existing instance of the Activity in your case.

An important difference is that “singleTask” doesn’t require the creation of a new task for the new Activities being launched when something is selected. Nor will it have to remove that new task on the back button each time.

Since your Activity stack does all pertain to one user “task”, and it doesn’t sound like you have an intricate Intent structure where singleInstance may be beneficial to always handle them, I would suggest using the singleTask launch mode.

Here is a good blog post for more info, as well as credited for the image: Android Activities and Tasks series – An introduction to Android’s UI component model

Leave a Comment