Android Lecture3 PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

Android Application Development

Daniel Switkin
Senior Software Engineer, Google Inc.
Goal

Get you an idea of how to start developing


Android applications
Introduce major Android application concepts
Walk you through a sample application in the
development environment
Agenda

System architecture

Hello World!

Application components

Practical matters

Toolchain
What is Android?

A free, open source mobile platform


A Linux-based, multiprocess, multithreaded OS
Android is not a device or a product
Its not even limited to phones - you could build
a DVR, a handheld GPS, an MP3 player, etc.
Applications

Home Contacts Phone Browser ...

Application Framework

Activity Manager Window Content View Notification


Manager Providers System Manager

Package Manager Telephony Resource Location GTalk Service


Manager Manager Manager

Libraries Android Runtime


Surface Manager Media SQLite Core Libraries
Framework

OpenGL | ES FreeType WebKit Dalvik Virtual


Machine

SGL SSL libc

Linux Kernel
Display Camera Driver Bluetooth Flash Memory Binder (IPC)
Driver Driver Driver Driver

USB Driver Keypad Driver WiFi Driver Audio Power


Drivers Management
Hello World!
The History of GUIs

Hardcoded to the screen


Hardcoded to the window
Hardcoded within a view hierarchy
Dynamic layout within a view hierarchy
Generating GUIs
Two ways to create GUIs: in XML or in code
Declarative route via XML has advantages
A lot of your GUI-related work will take place in:
res/layout
res/values
@id/name_for_component gives you
handle for referencing XML declarations in code
Views

Views are building blocks


Examples:
Can be as basic as: TextView, EditText, or
ListView
Fancier views: ImageView, MapView, WebView
Layouts
Controls how Views are laid out
FrameLayout : each child a layer
LinearLayout : single row or column
RelativeLayout : relative to other Views
TableLayout : rows and columns
AbsoluteLayout : <x,y> coordinates
Layouts are resizable

480x320

240x320

320x240
Layouts are customizable

res/layout/share.xml res/layout-land/share.xml
Layout Parameters
Specify many aspects of whats being rendered
Examples:
android:layout_height
android:layout_width

Tip: start with documentation for a specific View


or Layout and then look at whats inherited from
parent class
Application Components
Basic components
UI component typically
Activities
corresponding to one screen.
BroadcastReceivers Respond to broadcast Intents.
Faceless tasks that run in the
Services
background.
ContentProviders Enable applications to share data.
Activities

Typically correspond to one screen in a UI


But, they can:
be faceless
be in a floating window
return a value
Intents
Think of Intents as a verb and object; a
description of what you want done
Examples: VIEW, CALL, PLAY, etc.
System matches Intent with Activity that can best
provide that service
Activities and BroadcastReceivers describe what
Intents they can service in their IntentFilters (via
AndroidManifest.xml)
Intents

Home

Contacts
Photo
Pick photo Picasa
Gallery

GMail

Chat
New components
Client
System
Components
component
picks best
can be
can
makesusea
request for
component
replaced
existing functionality
anyafor
time
specific
that action
action
Blogger
BroadcastReceivers

Components designed to respond to broadcast


Intents
Think of them as a way to respond to external
notifications or alarms
Applications can invent and broadcast their own
Intents as well
Services

Faceless components that run in the background


Example: music player, network downlaod, etc.
Bind your code to a running service via a
remote-able interface defined in an IDL
Can run in your own process or separate
process
ContentProviders
Enables sharing of data across applications
Examples: address book, photo gallery, etc.
Provides uniform APIs for:
querying (returns a Cursor)
delete, update, and insert rows
Content is represented by URI and MIME type
Practical matters
Storage and Persistence

A couple of different options:


Preferences
Flat file
SQLite
ContentProvider
Packaging

Think of .apk files as Android packages


Everything needed for an application is bundled
up therein
Basically a glorified ZIP file
Resources
res/layout: declarative layout files
res/drawable: intended for drawing
res/anim: bitmaps, animations for transitions
res/values: externalized values for things like
strings, colors, styles, etc.

res/xml: general XML files used at runtime


res/raw: binary files (e.g. sound)
Assets
Similar to Resources
Differences:
Read-only
InputStream access to assets
Any kind of file
Be mindful of file sizes
Application Lifecycle

Application lifecycle is managed by the system


Application start/stop is transparent to the user
End-user only sees that they are moving between
screens
Read documentation for android.app.Activity
Toolchain
Emulator

QEMU-based ARM emulator


runs same system image as
a device

Use same toolchain to work


with devices or emulator
Eclipse Plugin
Project template
Debugging

Call stack

Examine variables

Breakpoints, single stepping


Eclipse demo
Q &A

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy