page.title=&lt;activity&gt;
parent.title=The AndroidManifest.xml File
parent.link=manifest-intro.html
@jd:body

<dl class="xml">
<dt>syntax:</dt>
<dd><pre class="stx">&lt;activity android:<a href="#reparent">allowTaskReparenting</a>=["true" | "false"]
          android:<a href="#always">alwaysRetainTaskState</a>=["true" | "false"]
          android:<a href="#clear">clearTaskOnLaunch</a>=["true" | "false"]
          android:<a href="#config">configChanges</a>=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale", "uiMode",
                                 "orientation", "screenSize", "smallestScreenSize"]
          android:<a href="#enabled">enabled</a>=["true" | "false"]
          android:<a href="#exclude">excludeFromRecents</a>=["true" | "false"]
          android:<a href="#exported">exported</a>=["true" | "false"]
          android:<a href="#finish">finishOnTaskLaunch</a>=["true" | "false"]
          android:<a href="#hwaccel">hardwareAccelerated</a>=["true" | "false"]
          android:<a href="#icon">icon</a>="<i>drawable resource</i>"
          android:<a href="#label">label</a>="<i>string resource</i>"
          android:<a href="#lmode">launchMode</a>=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:<a href="#multi">multiprocess</a>=["true" | "false"]
          android:<a href="#nm">name</a>="<i>string</i>"
          android:<a href="#nohist">noHistory</a>=["true" | "false"]  <!-- ##api level 3## -->
          android:<a href="#prmsn">permission</a>="<i>string</i>"
          android:<a href="#proc">process</a>="<i>string</i>"
          android:<a href="#screen">screenOrientation</a>=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "sensor" | "fullSensor" | "nosensor"]
          android:<a href="#state">stateNotNeeded</a>=["true" | "false"]
          android:<a href="#aff">taskAffinity</a>="<i>string</i>"
          android:<a href="#theme">theme</a>="<i>resource or theme</i>"
          android:<a href="#uioptions">uiOptions</a>=["none" | "splitActionBarWhenNarrow"]
          android:<a href="#wsoft">windowSoftInputMode</a>=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] &gt;   <!-- ##api level 3## -->
    . . .
&lt;/activity&gt;</pre></dd>

<dt>contained in:</dt>
<dd><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code></dd>

<dt>can contain:</dt>
<dd><code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code></dd>

<dt>description:</dt>
<dd>Declares an activity (an {@link android.app.Activity} subclass) that 
implements part of the application's visual user interface.  All activities 
must be represented by {@code &lt;activity&gt;} 
elements in the manifest file.  Any that are not declared there will not be seen 
by the system and will never be run.

<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="reparent"></a>{@code android:allowTaskReparenting}</dt>
<dd>Whether or not the activity can move from the task that started it to 
the task it has an affinity for when that task is next brought to the 
front &mdash; "{@code true}" if it can move, and "{@code false}" if it 
must remain with the task where it started.  

<p>
If this attribute is not set, the value set by the corresponding 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#reparent">allowTaskReparenting</a></code>
attribute of the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element 
applies to the activity.  The default value is "{@code false}".
</p>

<p>
Normally when an activity is started, it's associated with the task of 
the activity that started it and it stays there for its entire lifetime.  
You can use this attribute to force it to be re-parented to the task it 
has an affinity for when its current task is no longer displayed.  
Typically, it's used to cause the activities of an application to move 
to the main task associated with that application.
</p>

<p>
For example, if an e-mail message contains a link to a web page, clicking 
the link brings up an activity that can display the page.  That activity 
is defined by the browser application, but is launched as part of the e-mail 
task.  If it's reparented to the browser task, it will be shown when the 
browser next comes to the front, and will be absent when the e-mail task 
again comes forward.
</p>

<p>
The affinity of an activity is defined by the 
<code><a href="#aff">taskAffinity</a></code> attribute.  The affinity 
of a task is determined by reading the affinity of its root activity.
Therefore, by definition, a root activity is always in a task with the
same affinity.  Since activities with "{@code singleTask}" or 
"{@code singleInstance}" launch modes can only be at the root of a task,
re-parenting is limited to the "{@code standard}" and "{@code singleTop}" 
modes.  (See also the <code><a href="#lmode">launchMode</a></code> 
attribute.)
</p></dd>

<dt><a name="always"></a>{@code android:alwaysRetainTaskState}</dt>
<dd>Whether or not the state of the task that the activity is in will always 
be maintained by the system &mdash; "{@code true}" if it will be, and 
"{@code false}" if the system is allowed to reset the task to its initial 
state in certain situations.  The default value is "{@code false}".  This 
attribute is meaningful only for the root activity of a task; it's ignored 
for all other activities.

<p>
Normally, the system clears a task (removes all activities from the stack 
above the root activity) in certain situations when the user re-selects that 
task from the home screen.  Typically, this is done if the user hasn't visited 
the task for a certain amount of time, such as 30 minutes.
</p>

<p>
However, when this attribute is "{@code true}", users will always return 
to the task in its last state, regardless of how they get there.  This is 
useful, for example, in an application like the web browser where there is 
a lot of state (such as multiple open tabs) that users would not like to lose.
</p></dd>

<dt><a name="clear"></a>{@code android:clearTaskOnLaunch}</dt>
<dd>Whether or not all activities will be removed from the task, except for 
the root activity, whenever it is re-launched from the home screen &mdash; 
"{@code true}" if the task is always stripped down to its root activity, and 
"{@code false}" if not.  The default value is "{@code false}".  This attribute 
is meaningful only for activities that start a new task (the root activity); 
it's ignored for all other activities in the task.

<p>
When the value is "{@code true}", every time users start the task again, they 
are brought to its root activity, regardless of what they were last doing in 
the task and regardless of whether they used BACK or HOME to last leave it.  
When the value is "{@code false}", the task may be cleared of activities in 
some situations (see the 
<code><a href="#always">alwaysRetainTaskState</a></code> attribute), but not always.  
</p>

<p>
Suppose, for example, that someone launches activity P from the home screen, 
and from there goes to activity Q.  The user next presses HOME, and then returns 
to activity P.  Normally, the user would see activity Q, since that is what they 
were last doing in P's task.  However, if P set this flag to "{@code true}", all 
of the activities on top of it (Q in this case) were removed when the user pressed 
HOME and the task went to the background.  So the user sees only P when returning 
to the task.
</p>

<p>
If this attribute and <code><a href="#reparent">allowTaskReparenting</a></code> 
are both "{@code true}", any activities that can be re-parented are moved to 
the task they share an affinity with; the remaining activities are then dropped, 
as described above.
</p></dd>

<dt><a name="config"></a>{@code android:configChanges}</dt>
<dd>Lists configuration changes that the activity will handle itself.  When a configuration
change occurs at runtime, the activity is shut down and restarted by default, but declaring a
configuration with this attribute will prevent the activity from being restarted. Instead, the
activity remains running and its <code>{@link android.app.Activity#onConfigurationChanged
onConfigurationChanged()}</code> method is called.

<p class="note"><strong>Note:</strong> Using this attribute should be
avoided and used only as a last-resort. Please read <a
href="{@docRoot}guide/topics/resources/runtime-changes.html">Handling Runtime Changes</a> for more
information about how to properly handle a restart due to a configuration change.</p>

<p>
Any or all of the following strings are valid values for this attribute. Multiple values are
separated by '{@code |}' &mdash; for example, "{@code locale|navigation|orientation}".
</p>

<table>
<tr>
   <th>Value</th>
   <th>Description</th>
</tr><tr>
   <td>"{@code mcc}"</td>
   <td>The IMSI mobile country code (MCC) has changed &mdash;
       a SIM has been detected and updated the MCC.</td>
</tr><tr>
   <td>"{@code mnc}"</td>
   <td>The IMSI mobile network code (MNC) has changed &mdash;
       a SIM has been detected and updated the MNC.</td>
</tr><tr>
   <td>"{@code locale}"</td>
   <td>The locale has changed &mdash; the user has selected a new
       language that text should be displayed in.</td>
</tr><tr>
   <td>"{@code touchscreen}"</td>
   <td>The touchscreen has changed.  (This should never normally happen.)</td>
</tr><tr>
   <td>"{@code keyboard}"</td>
   <td>The keyboard type has changed &mdash; for example, the user has
       plugged in an external keyboard.</td>
</tr><tr>
   <td>"{@code keyboardHidden}"</td>
   <td>The keyboard accessibility has changed &mdash; for example, the
       user has revealed the hardware keyboard.</td>
</tr><tr>
   <td>"{@code navigation}"</td>
   <td>The navigation type (trackball/dpad) has changed.  (This should never normally happen.)</td>
</tr><tr>
   <td>"{@code screenLayout}"</td>
   <td>The screen layout has changed &mdash; this might be caused by a
             different display being activated.</td>
 </tr><tr>
  <td>"{@code fontScale}"</td>
   <td>The font scaling factor has changed &mdash; the user has selected
       a new global font size.</td>
  </tr><tr>
  <td>"{@code uiMode}"</td>
   <td>The user interface mode has changed &mdash; this can be caused when the user places the
device into a desk/car dock or when the the night mode changes. See {@link
android.app.UiModeManager}. <em>Introduced in API Level 8</em>.</td>
  </tr><tr>
   <td>"{@code orientation}"</td>
   <td>The screen orientation has changed &mdash; the user has rotated the device. 
       <p class="note"><strong>Note:</strong> If your application targets API level 13 or higher (as
declared by the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code
minSdkVersion}</a> and <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code
targetSdkVersion}</a> attributes), then you should also declare the {@code "screenSize"}
configuration, because it also changes when a device switches between portrait and landscape
orientations.</p></td>
 </tr><tr>
   <td>"{@code screenSize}"</td>
   <td>The current available screen size has changed. This represents a change in the currently
available size, relative to the current aspect ratio, so will change when the user switches between
landscape and portrait. However, if your application targets API level 12 or lower, then your
activity always handles this configuration change itself (this configuration change does not restart
your activity, even when running on an Android 3.2 or higher device).
  <p><em>Added in API level 13.</em></p></td>
 </tr><tr>
   <td>"{@code smallestScreenSize}"</td>
   <td>The physical screen size has changed. This represents a change in size regardless of
orientation, so will only change when the actual physical screen size has changed such as switching
to an external display. A change to this configuration corresponds to a change in the <a
href="{@docRoot}guide/topics/resources/providing-resources.html#SmallestScreenWidthQualifier">
smallestWidth configuration</a>. However, if your application targets API level 12 or lower, then
your activity always handles this configuration change itself (this configuration change does not
restart your activity, even when running on an Android 3.2 or higher device).
  <p><em>Added in API level 13.</em></p></td>
 </tr>
</table>

<p>
All of these configuration changes can impact the resource values seen by the 
application.  Therefore, when <code>{@link android.app.Activity#onConfigurationChanged 
onConfigurationChanged()}</code> is called, it will generally be necessary to again 
retrieve all resources (including view layouts, drawables, and so on) to correctly 
handle the change. 
</p></dd>

<dt><a name="enabled"></a>{@code android:enabled}</dt>
<dd>Whether or not the activity can be instantiated by the system &mdash; 
"{@code true}" if it can be, and "{@code false}" if not.  The default value 
is "{@code true}".

<p>
The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element has its own 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#enabled">enabled</a></code> 
attribute that applies to all application components, including activities.  The 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
and {@code &lt;activity&gt;} attributes must both be "{@code true}" (as they both 
are by default) for the system to be able to instantiate the activity.  If either 
is "{@code false}", it cannot be instantiated.
</p></dd>

<dt><a name="exclude"></a>{@code android:excludeFromRecents}</dt>
<dd>Whether or not the activity should be excluded from the list of recently 
launched activities that can be displayed to users &mdash; "{@code true}" if 
it should be excluded, and "{@code false}" if it should be included.  
The default value is "{@code false}".
</p></dd>

<dt><a name="exported"></a>{@code android:exported}</dt>
<dd>Whether or not the activity can be launched by components of other 
applications &mdash; "{@code true}" if it can be, and "{@code false}" if not.  
If "{@code false}", the activity can be launched only by components of the 
same application or applications with the same user ID.  

<p>
The default value depends on whether the activity contains intent filters.  The 
absence of any filters means that the activity can be invoked only by specifying 
its exact class name.  This implies that the activity is intended only for 
application-internal use (since others would not know the class name).  So in 
this case, the default value is "{@code false}".
On the other hand, the presence of at least one filter implies that the activity 
is intended for external use, so the default value is "{@code true}".
</p>

<p>
This attribute is not the only way to limit an activity's exposure to other
applications.  You can also use a permission to limit the external entities that 
can invoke the activity  (see the 
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#prmsn">permission</a></code> 
attribute).
</p></dd>

<dt><a name="finish"></a>{@code android:finishOnTaskLaunch}</dt>
<dd>Whether or not an existing instance of the activity should be shut down 
(finished) whenever the user again launches its task (chooses the task on the 
home screen) &mdash; "{@code true}" if it should be shut down, and "{@code false}" 
if not.  The default value is "{@code false}". 

<p>
If this attribute and 
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code> 
are both "{@code true}", this attribute trumps the other.  The affinity of the 
activity is ignored.  The activity is not re-parented, but destroyed.
</p>

<dt><a name="hwaccel"></a>{@code android:hardwareAccelerated}</dt>
<dd>Whether or not hardware-accelerated rendering should be enabled for this
Activity &mdash; "{@code true}" if it should be enabled, and "{@code false}" if
not. The default value is "{@code false}".

<p>Starting from Android 3.0, a hardware-accelerated OpenGL renderer is
available to applications, to improve performance for many common 2D graphics
operations. When the hardware-accelerated renderer is enabled, most operations
in Canvas, Paint, Xfermode, ColorFilter, Shader, and Camera are accelerated.
This results in smoother animations, smoother scrolling, and improved
responsiveness overall, even for applications that do not explicitly make use
the framework's OpenGL libraries. </p>

<p>Note that not all of the OpenGL 2D operations are accelerated. If you enable
the hardware-accelerated renderer, test your application to ensure that it can
make use of the renderer without errors.</p>
</dd>

<dt><a name="icon"></a>{@code android:icon}</dt>
<dd>An icon representing the activity. The icon is displayed to users when 
a representation of the activity is required on-screen.  For example, icons 
for activities that initiate tasks are displayed in the launcher window.  
The icon is often accompanied by a label (see the <a href="#label">{@code
android:label}</a> attribute).
</p>

<p>
This attribute must be set as a reference to a drawable resource containing 
the image definition.  If it is not set, the icon specified for the application 
as a whole is used instead (see the 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
element's <code><a href="{@docRoot}guide/topics/manifest/application-element.html#icon">icon</a></code> attribute).
</p>

<p>
The activity's icon &mdash; whether set here or by the 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
element &mdash; is also the default icon for all the activity's intent filters (see the 
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's 
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#icon">icon</a></code> attribute). 
</p></dd>

<dt><a name="label"></a>{@code android:label}</dt>
<dd>A user-readable label for the activity.  The label is displayed on-screen 
when the activity must be represented to the user. It's often displayed along 
with the activity icon.

<p>
If this attribute is not set, the label set for the application as a whole is 
used instead (see the <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#label">label</a></code> attribute).
</p>

<p>
The activity's label &mdash; whether set here or by the 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element &mdash; is also the 
default label for all the activity's intent filters (see the 
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html">&lt;intent-filter&gt;</a></code> element's 
<code><a href="{@docRoot}guide/topics/manifest/intent-filter-element.html#label">label</a></code> attribute). 
</p>

<p>
The label should be set as a reference to a string resource, so that
it can be localized like other strings in the user interface.  
However, as a convenience while you're developing the application, 
it can also be set as a raw string.
</p></dd>

<dt><a name="lmode"></a>{@code android:launchMode}</dt>
<dd>An instruction on how the activity should be launched.  There are four modes
that work in conjunction with activity flags ({@code FLAG_ACTIVITY_*} constants) 
in {@link android.content.Intent} objects to determine what should happen when
the activity is called upon to handle an intent. They are:</p>

<p style="margin-left: 2em">"{@code standard}"
<br>"{@code singleTop}"
<br>"{@code singleTask}"
<br>"{@code singleInstance}"</p>

<p>
The default mode is "{@code standard}".
</p>

<p>
As shown in the table below, the modes fall into two main groups, with
"{@code standard}" and "{@code singleTop}" activities on one side, and
"{@code singleTask}" and "{@code singleInstance}" activities on the other.
An activity with the "{@code standard}" or "{@code singleTop}" launch mode
can be instantiated multiple times.  The instances can belong to any task
and can be located anywhere in the activity stack.  Typically, they're
launched into the task that called 
<code>{@link android.content.Context#startActivity startActivity()}</code>
(unless the Intent object contains a
<code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code>
instruction, in which case a different task is chosen &mdash; see the
<a href="#aff">taskAffinity</a> attribute).
</p>

<p>
In contrast, "<code>singleTask</code>" and "<code>singleInstance</code>" activities
can only begin a task.  They are always at the root of the activity stack.
Moreover, the device can hold only one instance of the activity at a time
&mdash; only one such task.
</p>

<p>
The "{@code standard}" and "{@code singleTop}" modes differ from each other 
in just one respect:  Every time there's a new intent for a "{@code standard}"
activity, a new instance of the class is created to respond to that intent.
Each instance handles a single intent.
Similarly, a new instance of a "{@code singleTop}" activity may also be
created to handle a new intent.  However, if the target task already has an
existing instance of the activity at the top of its stack, that instance
will receive the new intent (in an
<code>{@link android.app.Activity#onNewIntent onNewIntent()}</code> call);
a new instance is not created.
In other circumstances &mdash; for example, if an existing instance of the
"{@code singleTop}" activity is in the target task, but not at the top of
the stack, or if it's at the top of a stack, but not in the target task
&mdash; a new instance would be created and pushed on the stack.
</p>

<p>
The "{@code singleTask}" and "{@code singleInstance}" modes also differ from
each other in only one respect:  A "{@code singleTask}" activity allows other
activities to be part of its task. It's always at the root of its task, but
other activities (necessarily "{@code standard}" and "{@code singleTop}"
activities) can be launched into that task.  A "{@code singleInstance}"
activity, on the other hand, permits no other activities to be part of its task.
It's the only activity in the task.  If it starts another activity, that
activity is assigned to a different task &mdash; as if {@code
FLAG_ACTIVITY_NEW_TASK} was in the intent.
</p>

<table>
<tr>
<th>Use Cases</th>
<th>Launch Mode</th>
<th>Multiple Instances?</th>
<th>Comments</th>
</tr>
<tr>
<td rowspan="2" style="width:20%;">Normal launches for most activities</td>
<td>"<code>standard</code>"</td>
<td>Yes</td>
<td>Default. The system always creates a new instance of the activity in the
target task and routes the intent to it.</td>
</tr>
<tr>
<td>"<code>singleTop</code>"</td>
<td>Conditionally</td>
<td>If an instance of the activity already exists at the top of the target task,
the system routes the intent to that instance through a call to its {@link
android.app.Activity#onNewIntent onNewIntent()} method, rather than creating a
new instance of the activity.</td>
</tr>
<tr>
<td rowspan="2">Specialized launches<br>
<em>(not recommended for general use)</em></td>
<td>"<code>singleTask</code>"</td>
<td>No</td>
<td>The system creates the activity at the root of a new task and routes the
intent to it. However, if an instance of the activity already exists, the system
routes the intent to existing instance through a call to its {@link
android.app.Activity#onNewIntent onNewIntent()} method, rather than creating a
new one.</td>
</tr>
<tr>
<td>"<code>singleInstance</code>"</td>
<td>No</td>
<td>Same as "<code>singleTask"</code>, except that the system doesn't launch any
other activities into the task holding the instance. The activity is always the
single and only member of its task.</td>
</tr>
</table>

<p>As shown in the table above, <code>standard</code> is the default mode and is
appropriate for most types of activities. <code>SingleTop</code> is also a
common and useful launch mode for many types of activities. The other modes
&mdash; <code>singleTask</code> and <code>singleInstance</code> &mdash; are
<span style="color:red">not appropriate for most applications</span>,
since they result in an interaction model that is likely to be unfamiliar to
users and is very different from most other applications. 

<p>Regardless of the launch mode that you choose, make sure to test the usability
of the activity during launch and when navigating back to it from
other activities and tasks using the BACK key. </p>

<p>For more information on launch modes and their interaction with Intent
flags, see the 
<a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back Stack</a>
document.
</p>
</dd>

<dt><a name="multi"></a>{@code android:multiprocess}</dt>
<dd>Whether an instance of the activity can be launched into the process of the component 
that started it &mdash; "{@code true}" if it can be, and "{@code false}" if not.  
The default value is "{@code false}".

<p>
Normally, a new instance of an activity is launched into the process of the 
application that defined it, so all instances of the activity run in the same 
process.  However, if this flag is set to "{@code true}", instances of the 
activity can run in multiple processes, allowing the system to create instances 
wherever they are used (provided permissions allow it), something that is almost 
never necessary or desirable.
</p></dd>

<dt><a name="nm"></a>{@code android:name}</dt>
<dd>The name of the class that implements the activity, a subclass of 
{@link android.app.Activity}.  The attribute value should be a fully qualified 
class name (such as, "{@code com.example.project.ExtracurricularActivity}").  
However, as a shorthand, if the first character of the name is a period 
(for example, "{@code .ExtracurricularActivity}"), it is appended to the 
package name specified in the 
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
element.
<p>Once you publish your application, you <a
href="http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html">should not
change this name</a> (unless you've set <code><a
href="#exported">android:exported</a>="false"</code>).</p>

<p>
There is no default.  The name must be specified.
</p></dd>

<!-- ##api level 3## -->
<dt><a name="nohist"></a>{@code android:noHistory}</dt>
<dd>Whether or not the activity should be removed from the activity stack and
finished (its <code>{@link android.app.Activity#finish finish()}</code> 
method called) when the user navigates away from it and it's no longer 
visible on screen &mdash; "{@code true}" if it should be finished, and 
"{@code false}" if not.  The default value is "{@code false}".

<p>
A value of "{@code true}" means that the activity will not leave a
historical trace.  It will not remain in the activity stack for the task,
so the user will not be able to return to it.
</p>

<p>
This attribute was introduced in API Level 3.
</p>

<dt><a name="prmsn"></a>{@code android:permission}</dt>
<dd>The name of a permission that clients must have to launch the activity 
or otherwise get it to respond to an intent.  If a caller of 
<code>{@link android.content.Context#startActivity startActivity()}</code> or
<code>{@link android.app.Activity#startActivityForResult startActivityForResult()}</code>
has not been granted the specified permission, its intent will not be 
delivered to the activity.

<p>
If this attribute is not set, the permission set by the 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
element's
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#prmsn">permission</a></code> 
attribute applies to the activity.  If neither attribute is set, the activity is
not protected by a permission.
</p>

<p>
For more information on permissions, see the 
<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a> 
section in the introduction and another document, 
<a href="{@docRoot}guide/topics/security/security.html">Security and
Permissions</a>.
</p></dd>

<dt><a name="proc"></a>{@code android:process}</dt>
<dd>The name of the process in which the activity should run.  Normally, 
all components of an application run in the default process created for the 
application.  It has the same name as the application package.  The <code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> element's 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#proc">process</a></code> 
attribute can set a different default for all components.  But each component 
can override the default, allowing you to spread your application across 
multiple processes.

<p>
If the name assigned to this attribute begins with a colon (':'), a new 
process, private to the application, is created when it's needed and 
the activity runs in that process.
If the process name begins with a lowercase character, the activity will run 
in a global process of that name, provided that it has permission to do so.
This allows components in different applications to share a process, reducing 
resource usage.
</p></dd>

<dt><a name="screen"></a>{@code android:screenOrientation}</dt>
<dd>The orientation of the activity's display on the device. 
  
<p>The value can be any one of the following strings:</p>

<table>
<tr>
   <td>"{@code unspecified}"</td>
   <td>The default value.  The system chooses the orientation.  The policy it
       uses, and therefore the choices made in specific contexts, may differ 
       from device to device.</td>
</tr><tr>
   <td>"{@code user}"</td>
   <td>The user's current preferred orientation.</td>
</tr><tr>
   <td>"{@code behind}"</td>
   <td>The same orientation as the activity that's immediately beneath it in 
       the activity stack.</td>
</tr><tr>
   <td>"{@code landscape}"</td>
   <td>Landscape orientation (the display is wider than it is tall).</td>
</tr><tr>
   <td>"{@code portrait}"</td>
   <td>Portrait orientation (the display is taller than it is wide).</td>
</tr><tr>
   <td>"{@code reverseLandscape}"</td>
   <td>Landscape orientation in the opposite direction from normal landscape.
<em>Added in API level 9.</em></td>
</tr><tr>
   <td>"{@code reversePortrait}"</td>
   <td>Portrait orientation in the opposite direction from normal portrait.
<em>Added in API level 9.</em></td>
</tr><tr>
   <td>"{@code sensorLandscape}"</td>
   <td>Landscape orientation, but can be either normal or reverse landscape based on the device
sensor.
<em>Added in API level 9.</em></td>
</tr><tr>
   <td>"{@code sensorPortrait}"</td>
   <td>Portrait orientation, but can be either normal or reverse portrait based on the device
sensor.
<em>Added in API level 9.</em></td>
</tr><tr>
   <td>"{@code sensor}"</td>
   <td>The orientation is determined by the device orientation sensor.  The orientation of the
display depends on how the user is holding the device; it changes when the user rotates the
device. Some devices, though, will not rotate to all four possible orientations, by default. To
allow all four orientations, use {@code "fullSensor"}.</td>
</tr><tr>
   <td>"{@code fullSensor}"</td>
   <td>The orientation is determined by the device orientation sensor for any of the 4 orientations.
This is similar to {@code "sensor"} except this allows any of the 4 possible screen orientations,
regardless of what the device will normally do (for example, some devices won't normally use reverse
portrait or reverse landscape, but this enables those). <em>Added in API level 9.</em></td>
</tr><tr>
   <td>"{@code nosensor}"</td>
   <td>The orientation is determined without reference to a physical orientation sensor.  The sensor
is ignored, so the display will not rotate based on how the user moves the device.  Except for this
distinction, the system chooses the orientation using the same policy as for the "{@code
unspecified}" setting.</td>
</tr>
</table>

<p class="note"><strong>Note:</strong> When you declare one of the landscape or portrait values,
it is considered a hard requirement for the orientation in which the activity runs. As such,
the value you declare enables filtering by services such as Android Market so your application is
available only to devices that support the orientation required by your activities. For
example, if you declare either {@code "landscape"}, {@code "reverseLandscape"}, or
{@code "sensorLandscape"}, then your application will be available only to devices that support
landscape orientation. However, you should also explicitly declare that
your application requires either portrait or landscape orientation with the <a
href="{@docRoot}guide/topics/manifest/uses-feature-element.html">{@code &lt;uses-feature&gt;}</a>
element. For example, <code>&lt;uses-feature
android:name="android.hardware.screen.portrait"/></code>. This is purely a filtering behavior
provided by Android Market (and other services that support it) and the platform itself does not
control whether your app can be installed when a device supports only certain orientations.</p>

</dd>

<dt><a name="state"></a>{@code android:stateNotNeeded}</dt>
<dd>Whether or not the activity can be killed and successfully restarted 
without having saved its state &mdash; "{@code true}" if it can be restarted 
without reference to its previous state, and "{@code false}" if its previous 
state is required.  The default value is "{@code false}".

<p>
Normally, before an activity is temporarily shut down to save resources, its 
<code>{@link android.app.Activity#onSaveInstanceState onSaveInstanceState()}</code> 
method is called.  This method stores the current state of the activity in a 
{@link android.os.Bundle} object, which is then passed to 
<code>{@link android.app.Activity#onCreate onCreate()}</code> when the activity 
is restarted.  If this attribute is set to "{@code true}", 
{@code onSaveInstanceState()} may not be called and {@code onCreate()} will 
be passed {@code null} instead of the Bundle &mdash; just as it was when the 
activity started for the first time.
</p>

<p>
A "{@code true}" setting ensures that the activity can be restarted in the 
absence of retained state.  For example, the activity that displays the 
home screen uses this setting to make sure that it does not get removed if it 
crashes for some reason. 
</p></dd>

<dt><a name="aff"></a>{@code android:taskAffinity}</dt>
<dd>The task that the activity has an affinity for.  Activities with 
the same affinity conceptually belong to the same task (to the same
"application" from the user's perspective).  The affinity of a task 
is determined by the affinity of its root activity. 

<p>
The affinity determines two things &mdash; the task that the activity is re-parented 
to (see the <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code> 
attribute) and the task that will house the activity when it is launched 
with the <code>{@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}</code> 
flag.
</p>

<p>
By default, all activities in an application have the same affinity.  You
can set this attribute to group them differently, and even place
activities defined in different applications within the same task.  To 
specify that the activity does not have an affinity for any task, set
it to an empty string.

<p>
If this attribute is not set, the activity inherits the affinity set 
for the application (see the 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
element's 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#aff">taskAffinity</a></code>
attribute).  The name of the default affinity for an application is 
the package name set by the 
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> 
element.
</p>

<dt><a name="theme"></a>{@code android:theme}</dt>
<dd>A reference to a style resource defining an overall theme for the activity.  
This automatically sets the activity's context to use this theme (see
<code>{@link android.content.Context#setTheme setTheme()}</code>, and may also 
cause "starting" animations prior to the activity being launched (to better 
match what the activity actually looks like).

<p>
If this attribute is not set, the activity inherits the theme set for the 
application as a whole &mdash; from the 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
element's 
<code><a href="{@docRoot}guide/topics/manifest/application-element.html#theme">theme</a></code> 
attribute.  If that attribute is also not set, the default system theme is used. For more
information, see the <a
href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> developer guide.
</p>
<dd>

<!-- ##api level 14## -->
<dt><a name="uioptions"></a>{@code android:uiOptions}</dt>
<dd>Extra options for an activity's UI.
  <p>Must be one of the following values.</p>

  <table>
    <tr><th>Value</th><th>Description</th></tr>
    <tr><td>{@code "none"}</td><td>No extra UI options. This is the default.</td></tr>
    <tr><td>{@code "splitActionBarWhenNarrow"}</td><td>Add a bar at
the bottom of the screen to display action items in the {@link android.app.ActionBar}, when
constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small
number of action items appearing in the action bar at the top of the screen, the action bar is
split into the top navigation section and the bottom bar for action items. This ensures a reasonable
amount of space is made available not only for the action items, but also for navigation and title
elements at the top. Menu items are not split across the two bars; they always appear
together.</td></tr>
  </table>
  <p>For more information about the action bar, see the <a
href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer guide.</p>
  <p>This attribute was added in API level 14.</p>
</dd>


<!-- ##api level 3## -->
<dt><a name="wsoft"></a>{@code android:windowSoftInputMode}</dt>
<dd>How the main window of the activity interacts with the window containing 
the on-screen soft keyboard.  The setting for this attribute affects two 
things: 

<ul> 
<li>The state of the soft keyboard &mdash; whether it is hidden or visible 
&mdash; when the activity becomes the focus of user attention.</li>

<li>The adjustment made to the activity's main window &mdash; whether it is 
resized smaller to make room for the soft keyboard or whether its contents 
pan to make the current focus visible when part of the window is covered by 
the soft keyboard.</li>
</ul>

<p>
The setting must be one of the values listed in the following table, or a 
combination of one "{@code state...}" value plus one "{@code adjust...}" 
value.  Setting multiple values in either group &mdash; multiple 
"{@code state...}" values, for example &mdash; has undefined results.  
Individual values are separated by a vertical bar ({@code |}).  For example:
</p>

<pre>&lt;activity android:windowSoftInputMode="stateVisible|adjustResize" . . . &gt;</pre>

<p>
Values set here (other than "{@code stateUnspecified}" and 
"{@code adjustUnspecified}") override values set in the theme.
</p>

<table>
<tr>
   <th>Value</th>
   <th>Description</th>
</tr><tr>
   <td>"{@code stateUnspecified}"</td>
   <td>The state of the soft keyboard (whether it is hidden or visible) 
       is not specified.  The system will choose an appropriate state or
       rely on the setting in the theme.  

       <p>
       This is the default setting for the behavior of the soft keyboard.
       </p></td>
</tr></tr>
   <td>"{@code stateUnchanged}"</td>
   <td>The soft keyboard is kept in whatever state it was last in,
       whether visible or hidden, when the activity comes to the fore.</td>
</tr></tr>
   <td>"{@code stateHidden}"</td>
   <td>The soft keyboard is hidden when the user chooses the activity 
       &mdash; that is, when the user affirmatively navigates forward to the 
       activity, rather than backs into it because of leaving another activity.</td>
</tr></tr>
   <td>"{@code stateAlwaysHidden}"</td>
   <td>The soft keyboard is always hidden when the activity's main window 
       has input focus.</td>
</tr></tr>
   <td>"{@code stateVisible}"</td>
   <td>The soft keyboard is visible when that's normally appropriate 
       (when the user is navigating forward to the activity's main window).</td>
</tr></tr>
   <td>"{@code stateAlwaysVisible}"</td>
   <td>The soft keyboard is made visible when the user chooses the 
       activity &mdash; that is, when the user affirmatively navigates forward 
       to the activity, rather than backs into it because of leaving another 
       activity.</td>
</tr></tr>
   <td>"{@code adjustUnspecified}"</td>
   <td>It is unspecified whether the activity's main window resizes 
       to make room for the soft keyboard, or whether the contents 
       of the window pan to make the currentfocus visible on-screen. 
       The system will automatically select one of these modes depending
       on whether the content of the window has any layout views that 
       can scroll their contents.  If there is such a view, the window 
       will be resized, on the assumption that scrolling can make all 
       of the window's contents visible within a smaller area.

       <p>
       This is the default setting for the behavior of the main window.
       </p></td>
</tr></tr>
   <td>"{@code adjustResize}"</td>
   <td>The activity's main window is always resized to make room for 
       the soft keyboard on screen.</td>
</tr></tr>
   <td>"{@code adjustPan}"</td>
   <td>The activity's main window is not resized to make room for the soft
       keyboard.  Rather, the contents of the window are automatically 
       panned so that the current focus is never obscured by the keyboard
       and users can always see what they are typing.  This is generally less 
       desirable than resizing, because the user may need to close the soft
       keyboard to get at and interact with obscured parts of the window.</td>
</tr>
</table>

<p>
This attribute was introduced in API Level 3.
</p></dd>
</dl></dd>

<!-- ##api level indication## -->
<dt>introduced in:</dt>
<dd>API Level 1 for all attributes except for 
<code><a href="#nohist">noHistory</a></code> and
<code><a href="#wsoft">windowSoftInputMode</a></code>, which were added in API 
Level 3.</dd>

<dt>see also:</dt>
<dd><code><a href="{@docRoot}guide/topics/manifest/application-element.html">&lt;application&gt;</a></code> 
<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code></dd>
</dl>
