page.title=Notifying the User
page.tags=notifications
helpoutsWidget=true

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="https://material.google.com/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="https://material.google.com/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>
