<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML style="overflow:auto;">
<HEAD>
<meta name="generator" content="JDiff v1.1.0">
<!-- Generated by the JDiff Javadoc doclet -->
<!-- (http://www.jdiff.org) -->
<meta name="description" content="JDiff is a Javadoc doclet which generates an HTML report of all the packages, classes, constructors, methods, and fields which have been removed, added or changed in any way, including their documentation, when two APIs are compared.">
<meta name="keywords" content="diff, jdiff, javadiff, java diff, java difference, API difference, difference between two APIs, API diff, Javadoc, doclet">
<TITLE>
android.content.pm.ActivityInfo
</TITLE>
<link href="../../../../assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
<link href="../stylesheet-jdiff.css" rel="stylesheet" type="text/css" />
<noscript>
<style type="text/css">
body{overflow:auto;}
#body-content{position:relative; top:0;}
#doc-content{overflow:visible;border-left:3px solid #666;}
#side-nav{padding:0;}
#side-nav .toggle-list ul {display:block;}
#resize-packages-nav{border-bottom:3px solid #666;}
</style>
</noscript>
<style type="text/css">
</style>
</HEAD>
<BODY>
<!-- Start of nav bar -->
<a name="top"></a>
<div id="header" style="margin-bottom:0;padding-bottom:0;">
<div id="headerLeft">
<a href="../../../../index.html" tabindex="-1" target="_top"><img src="../../../../assets/images/bg_logo.png" alt="Android Developers" /></a>
</div>
  <div id="headerRight">
  <div id="headerLinks">
<!-- <img src="/assets/images/icon_world.jpg" alt="" /> -->
<span class="text">
<!-- &nbsp;<a href="#">English</a> | -->
<nobr><a href="http://developer.android.com" target="_top">Android Developers</a> | <a href="http://www.android.com" target="_top">Android.com</a></nobr>
</span>
</div>
  <div class="and-diff-id" style="margin-top:6px;margin-right:8px;">
    <table class="diffspectable">
      <tr>
        <td colspan="2" class="diffspechead">API Diff Specification</td>
      </tr>
      <tr>
        <td class="diffspec" style="padding-top:.25em">To Level:</td>
        <td class="diffvaluenew" style="padding-top:.25em">5</td>
      </tr>
      <tr>
        <td class="diffspec">From Level:</td>
        <td class="diffvalueold">4</td>
      </tr>
      <tr>
        <td class="diffspec">Generated</td>
        <td class="diffvalue">2009.11.19 19:35</td>
      </tr>
    </table>
    </div><!-- End and-diff-id -->
  <div class="and-diff-id" style="margin-right:8px;">
    <table class="diffspectable">
      <tr>
        <td class="diffspec" colspan="2"><a href="jdiff_statistics.html">Statistics</a>
      </tr>
    </table>
  </div> <!-- End and-diff-id -->
  </div> <!-- End headerRight -->
  </div> <!-- End header -->
<div id="body-content" xstyle="padding:12px;padding-right:18px;">
<div id="doc-content" style="position:relative;">
<div id="mainBodyFluid">
<H2>
Class android.content.pm.<A HREF="../../../../reference/android/content/pm/ActivityInfo.html" target="_top"><font size="+2"><code>ActivityInfo</code></font></A>
</H2>
<a NAME="constructors"></a>
<a NAME="methods"></a>
<a NAME="fields"></a>
<p>
<a NAME="Added"></a>
<TABLE summary="Added Fields" WIDTH="100%">
<TR>
  <TH VALIGN="TOP" COLSPAN=2>Added Fields</FONT></TD>
</TH>
<TR BGCOLOR="#FFFFFF" CLASS="TableRowColor">
  <TD VALIGN="TOP" WIDTH="25%">
  <A NAME="android.content.pm.ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS"></A>
  <nobr><code>int</code>&nbsp;<A HREF="../../../../reference/android/content/pm/ActivityInfo.html#FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS" target="_top"><code>FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS</code></A></nobr>
  </TD>
  <TD>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
      </div>	
      <div id="footer">
        <div id="copyright">
        Except as noted, this content is licensed under 
        <a href="http://creativecommons.org/licenses/by/2.5/"> Creative Commons Attribution 2.5</a>.
        For details and restrictions, see the <a href="/license.html">Content License</a>.
        </div>
      <div id="footerlinks">
      <p>
        <a href="http://www.android.com/terms.html">Site Terms of Service</a> -
        <a href="http://www.android.com/privacy.html">Privacy Policy</a> -
        <a href="http://www.android.com/branding.html">Brand Guidelines</a>
      </p>
    </div>
    </div> <!-- end footer -->
    </div><!-- end doc-content -->
    </div> <!-- end body-content --> 
<script src="//www.google-analytics.com/ga.js" type="text/javascript">
</script>
<script type="text/javascript">
  try {
    var pageTracker = _gat._getTracker("UA-5831155-1");
    pageTracker._setAllowAnchor(true);
    pageTracker._initData();
    pageTracker._trackPageview();
  } catch(e) {}
</script>
</BODY>
</HTML>
