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