Download CS499 * Mobile Application Development

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CS499 – Mobile Application
Development
Fall 2013
Programming the Android Platform
Introduction
Course Information
• Pre-reqs: C or better in CS 310 and CS367
• This course will teach fundamental
programming principles with a focus on the
mobile environment and the Android
Platform. The course emphasizes practical
application of numerous academic concepts.
• This is a combined lecture/lab course. Expect
to spend time outside class reading and
coding.
Course Information
•
•
•
•
Instructor: Liz White
email: [email protected]
Office: 5315 Engineering
We will be using Piazza for class discussion.
There is no TA for this class; you should post
questions to this board and answer questions
posted by other students.
Course Information
• Exams: 30% (Final Exam & Midterm)
• Course App: 30%
• Programming Project & Labs: 40%
– There will be both smaller labs and team projects
assigned. There will be both coding and
documentation requirements in the project.
Course Information
• No required text
• Lots of documentation online
– http://developer.android.com/ - start browsing
today!
• Initial version of my slides and labs come from
a similar course at UMCP by Dr. Adam Porter
What is Android?
• A software stack for mobile devices
– Operating system,
– middleware
– key applications
• Use Android SDK (Java) to create applications
– Libraries & development tools
Android Architecture
Linux Kernel
• Abstraction Layer between HW & SW
• Provides services such as
– Security
– Memory & process management
– Network stack
– Device driver model
Linux Kernel
• Android-specific components
– Android shared memory
– Power management
– Alarm driver
– Low memory killer
– kernel debugger & logger
Native Libraries
Android Runtime
• Core Libraries
– android.*, java.*, javax.*, …
– does not include all the standard Java SDK classes
• Dalvik Virtual Machine
– Applications written in Java
– Do not run on the JVM
– VM designed to run on a handset: Slow CPU, little
RAM (~10mb at runtime), limited battery life
DVM
•
•
•
•
One .dex file for multiple classes
Modified garbage collection
Optimizations at installation time
Register-based, rather than stack-based
– avoids unnecessary memory accesses
– 30% fewer instructions
– see www.youtube.com/watch? v=ptjedOZEXPM
Android Architecture
Application Framework
• Window Manager
– Manages top-level window’s look & behavior
• View System
– lists, grid, text boxes, buttons, …
• Content Providers
– Inter-application data sharing
• Activity Manager
– Application lifecycle and common navigation stack
Application Framework
• Package Manager
– Manages application packages
• Telephony manager
– State of telephony services
• Resource Manager
– deals with non-code resources: strings, graphics, layout files
• Location Manager
– System location services
• Notification Manager
– Notify users when events occur
Applications
• Standard apps including:
– Home – main screen
– Contacts
– Phone
– browser
– email
• YOUR APP!
Developing Apps
• New style of programming for most of you: Eventbased
• User interface a key element. Will talk about how to
create but not about what makes a good interface (a
pretty involved topic!)
• Concurrency
– apps have a lifecycle that you will have to deal with
– will need to deal with things like saving/restoring state
when apps are interrupted.
• Reuse
– can use other components (camera, GPS, …) in your app
– can use data on the device (contacts, …) in your app
Next Class
• Bring laptop if you plan to develop there.
• Going to download/install the software and
do a simple ‘Hello Android’ app
• If you are developing on a non-portable
device, you can work with a student who has a
laptop so that you understand the process.