77 lines
4.0 KiB
Plaintext
77 lines
4.0 KiB
Plaintext
page.title=Building Blocks
|
|
@jd:body
|
|
<h1>Android Building Blocks</h1>
|
|
|
|
<p>You can think of an Android application as a collection of components, of
|
|
various kinds. These components are for the most part quite loosely coupled,
|
|
to the degree where you can accurately describe them as a federation of
|
|
components rather than a single cohesive application.</p>
|
|
|
|
<p>Generally, these components all run in the same system process. It's
|
|
possible (and quite common) to create multiple threads within that process,
|
|
and it's also possible to create completely separate child processes if you
|
|
need to. Such cases are pretty uncommon though, because Android tries very
|
|
hard to make processes transparent to your code.</p>
|
|
|
|
<p>These are the most important parts of the Android APIs:</p>
|
|
|
|
<dl>
|
|
<dt><a href="{@docRoot}devel/bblocks-manifest.html">AndroidManifest.xml</a></dt>
|
|
<dd>The AndroidManifest.xml file is the control file that tells the system
|
|
what to do with all the top-level components (specifically activities,
|
|
services, intent receivers, and content providers described below)
|
|
you've created. For instance, this is the
|
|
"glue" that actually specifies which Intents your Activities receive.</dd>
|
|
|
|
<dt>{@link android.app.Activity Activities}</dt>
|
|
<dd>An Activity is, fundamentally, an object that has a life cycle. An
|
|
Activity is a chunk of code that does some work; if necessary, that work
|
|
can include displaying a UI to the user. It doesn't have to, though - some
|
|
Activities never display UIs. Typically, you'll designate one of your
|
|
application's Activities as the entry point to your application. </dd>
|
|
|
|
|
|
<dt>{@link android.view.View Views}</dt>
|
|
<dd>A View is an object that knows how to draw itself to the screen.
|
|
Android user interfaces are comprised of trees of Views. If you want to
|
|
perform some custom graphical technique (as you might if you're writing a
|
|
game, or building some unusual new user interface widget) then you'd
|
|
create a View.</dd>
|
|
|
|
|
|
<dt>{@link android.content.Intent Intents}</dt>
|
|
<dd>An Intent is a simple message object that represents an "intention" to
|
|
do something. For example, if your application wants to display a web
|
|
page, it expresses its "Intent" to view the URI by creating an Intent
|
|
instance and handing it off to the system. The system locates some other
|
|
piece of code (in this case, the Browser) that knows how to handle that
|
|
Intent, and runs it. Intents can also be used to broadcast interesting
|
|
events (such as a notification) system-wide.</dd>
|
|
|
|
|
|
<dt>{@link android.app.Service Services}</dt>
|
|
<dd>A Service is a body of code that runs in the background. It can run in
|
|
its own process, or in the context of another application's process,
|
|
depending on its needs. Other components "bind" to a Service and invoke
|
|
methods on it via remote procedure calls. An example of a Service is a
|
|
media player; even when the user quits the media-selection UI, she
|
|
probably still intends for her music to keep playing. A Service keeps the
|
|
music going even when the UI has completed.</dd>
|
|
|
|
|
|
<dt>{@link android.app.NotificationManager Notifications}</dt>
|
|
<dd>A Notification is a small icon that appears in the status bar. Users
|
|
can interact with this icon to receive information. The most well-known
|
|
notifications are SMS messages, call history, and voicemail, but
|
|
applications can create their own. Notifications are the
|
|
strongly-preferred mechanism for alerting the user of something that needs
|
|
their attention.</dd>
|
|
|
|
<dt>{@link android.content.ContentProvider ContentProviders}</dt>
|
|
<dd>A ContentProvider is a data storehouse that provides access to data on
|
|
the device; the classic example is the ContentProvider that's used to
|
|
access the user's list of contacts. Your application can access data that
|
|
other applications have exposed via a ContentProvider, and you can also
|
|
define your own ContentProviders to expose data of your own.</dd>
|
|
</dl>
|