EDWARD'S LECTURE NOTES:
More notes at http://tanguay.info/learntracker
C O U R S E 
Programming Mobile Applications for Android
Adam Porter, University of Maryland
https://www.coursera.org/course/android
C O U R S E   L E C T U R E 
Android Architecture
Notes taken on June 10, 2014 by Edward Tanguay
•
android platform
•
software stack to support phones and tablets
•
has several layers software from the low-level OS kernel up to key apps
•
comes from SDK
•
Android Architecture
•
Linux Kernal
•
lowest layer of software
•
provides core services
•
permissions
•
memory and process management
•
file and network I/O
•
device drivers
•
Android specific services
•
power management (for increased battery power)
•
shared memory
•
low memory killer
•
interprocess communication mechanism (Binder IPC Mechanism)
•
Libraries
•
typically written in C and C++, hence referred to as the "native libraries"
•
System C library
•
process and thread creation
•
mathematical computations
•
Surface Manager
•
updating the display
•
Media Framwork
•
audio/video
•
Webkit
•
rendering web pages
•
OpenGL
•
high performance graphics
•
SQLIte
•
in memory relational databaes
•
Android Runtime
•
Core Java Libraries
•
Android applications are typically written in the Java programming language
•
basic classes
•
java.* and javax.* classes
•
app lifecycle
•
android.*
•
Internet/Web services
•
ord.*
•
unit testing
•
junit.*
•
Dalvik Virtual Machine
•
the software that actually executes Android applications
•
Android apps are written in Java but they do not run on a standard Java virtual machine
•
develop first write their applications in Java
•
the compile turns it into bytecode files
•
tool called dx transfomed the bytecode files into classes.dex
•
classes.dex is packaged with other application resources and installed on the device
•
when use launches the app, the Dalvic Virtual Machine will execute the classes.dex file
•
designed to run in resource constraained environment
•
lower CPU
•
less memory
•
limited battery life
Dan Bornstein (Google) on the Dalvik Virtual Machine (2008)
•
Application Framework
•
reusable software that modbile applications need
•
package manager
•
database that keeps track of all applications installed on device
•
windows manager
•
manages windows of an app
•
system notification bar
•
main app window
•
sub windows of menus or dialogues
•
view system
•
icons
•
text entry boxes
•
buttons
•
Resource manager
•
lets you define strings in multiple languages
•
Activity Manager
•
coordinate activities
•
e.g. hit back button and go to last activity
•
Content Providers
•
inter-app data sharing
•
e.g. use contact information in a content provider
•
Location Manager
•
allows applications to receive location and movement information
•
Notification Manager
•
software always listing for incoming notifications and put a notice in message bar
•
Applications
•
Home Screen
•
Contacts
•
none of the standard apps are hard-coded into the system