page.title=Notifying the User
page.tags="notifications"

trainingnavtop=true
startpage=true


@jd:body
<div id="tb-wrapper">
<div id="tb">

<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
<h2>Dependencies and prerequisites</h2>

<ul>
  <li>Android 1.6 (API Level 4) or higher</li>
</ul>
<h2>You should also read</h2>
<ul>
    <li>
        <a href="{@docRoot}guide/topics/ui/notifiers/notifications.html">Notifications</a> API Guide
    </li>
    <li>
        <a href="{@docRoot}guide/components/intents-filters.html">
        Intents and Intent Filters
        </a>
    </li>
    <li>
        <a href="{@docRoot}design/patterns/notifications.html">Notifications</a> Design Guide
    </li>
</ul>

<h2>Try it out</h2>

<div class="download-box">
  <a href="{@docRoot}shareables/training/NotifyUser.zip"
class="button">Download the sample</a>
 <p class="filename">NotifyUser.zip</p>
</div>

</div>
</div>

<p>
   A notification is a user interface element that you display outside your app's normal UI to indicate 
   that an event has occurred. Users can choose to view the notification while using other apps and respond 
   to it when it's convenient for them. 

</p>

<p>
    The <a href="{@docRoot}design/patterns/notifications.html">Notifications design guide</a> shows
    you how to design effective notifications and when to use them. This class shows you how to
    implement the most common notification designs.
</p>
<h2>Lessons</h2>

<dl>
    <dt>
        <strong><a href="build-notification.html">Building a Notification</a></strong>
    </dt>
    <dd>
        Learn how to create a notification
        {@link android.support.v4.app.NotificationCompat.Builder Builder}, set the
        required features, and issue the notification.
    </dd>
    <dt>
        <strong><a href="navigation.html">Preserving Navigation when Starting an Activity</a></strong>
    </dt>
    <dd>
        Learn how to enforce the proper
        navigation for an {@link android.app.Activity} started from a notification.
    </dd>
    <dt>
        <strong>
        <a href="managing.html">Updating Notifications</a>
        </strong>
    </dt>
    <dd>
        Learn how to update and remove notifications.
    </dd>
    <dt>
        <strong>
        <a href="expanded.html">Using Big View Styles</a>
        </strong>
    </dt>
    <dd>
        Learn how to create a big view within an expanded notification, while still maintaining 
        backward compatibility.
    </dd>
   
    <dt>
        <strong>
        <a href="display-progress.html">Displaying Progress in a Notification</a>
        </strong>
    </dt>
    <dd>
        Learn how to display the progress of an operation in a notification, both for
        operations where you can estimate how much has been completed (determinate progress) and
        operations where you don't know how much has been completed (indefinite progress).
    </dd>
</dl>
