Introductory Android App Development Training
CommonsWare offers introductory Android app development
training to firms and other organizations. Whether you go
with the stock week-long hands-on course, or go with a custom
agenda, the training is designed to get a team spun up on
building quality Android apps.
Here is the baseline agenda for a week-long introductory course:
- Intro to Android and App Development
- What are the major components of an Android app?
- What tools do we use to build an Android app?
- What is the app itself — is it a file or something?
- How do we distribute the app?
- Intro to Gradle, the Manifest, Resources, and Assets
- What is Gradle and why do we care?
- What is the manifest, and what goes in there instead of in Gradle files?
- What are resources, and what are some of the common types of resources?
- What are assets, and why do we have both assets and resources?
- Android Internals and the Process Model
- What is Android itself, really?
- I hear stuff about "Dalvik" and ART — what are they?
- What is inside our app's process when our app is run?
- When does our process go away?
- Activities, Widgets, and Containers
- What is an activity? What goes inside it?
- What are the common types of widgets?
- What are the common types of containers for organizing widgets?
- What are common properties that we configure on widgets and containers?
- What is an
AdapterView, and what role does it fill?
- What is an
- How do we create a basic
Adapter for a
- How do we customize that
Adapter to make the
ListView rows look the way we want?
- What is
WebView, and what powers it?
- How do we load HTML content into a
- Using JARs and Libraries
- What are artifacts and repositories, with respect to code reuse?
- How do we configure Android Studio to pull in artifacts as dependencies?
- What is an Android library project?
- What is an AAR? Does it involve pirates?
- What is the Android Support package?
- The Action Bar
- What is the action bar? Where do we get it?
- What are themes, and how do they affect what the action bar looks like?
- How do we add overflow menu items or toolbar buttons to the action bar?
- Multiple Activities and the Activity Lifecycle
- Why would we want more than one activity in our app?
- How do we add our second activity?
- How do we pass control to that activity?
- How do we launch activities from other apps?
- How do we find out when our activities are coming and going from the screen?
- Fragments and
- What is a fragment? And why are we only talking about these now?
- How do we create a fragment?
- How do we add a fragment to our UI?
- What is this "master-detail pattern" I keep hearing about?
- What is a
ViewPager, and what does it have to do with fragments?
- Resource Sets and Configuration Changes
- What is a configuration?
- How do we have different resources for different configurations?
- How does Android choose the resource to use for a given configuration?
- What happens when the configuration changes on the fly, such as the user rotates the screen?
- How do we handle configuration changes, so we do not lose data or otherwise screw up?
- I thought this was Java — what is different about threads in Android?
- What is "jank"?
- What is the "main application thread", and how does it pertain to jank?
- What is
- What are other ways of having background threads coordinate with the main application thread?
- What are permissions?
- How do we request basic permissions from users?
- How do we request dangerous permissions from users on Android 6.0+?
- Files and Preferences
- What is "internal storage", and how do we use it?
- What is "external storage", and how do we use it?
- What are the limitations with removable storage?
- What are
SharedPreferences, and how do we use them?
- How do we build a UI to collect preferences en masse from the user, like the Settings app does?
- What is SQLite?
- What is SQLCipher for Android?
- How do we create and upgrade our database?
- How do we query our database?
- How do we do the rest of the CRUD with our database?
- Internet Access
- What is different about Internet access on Android, compared to other Java programs?
- What are the HTTP APIs available to us?
- Gosh, this seems like a hassle — how can we solve common problems?
- How does SSL work with Android?
- Accessing and Consuming Content
- What are the Android equivalents of the "open file" and "save as" dialogs that you see on other platforms?
- We get a
Uri back from that — how do we use this?
- How long can we use that
Uri, and what do we do if we need access to that content for a longer time?
- ContentProvider Basics
- What is a
- What sorts of content does a
ContentProvider provide, since
ContentProviders provide content?
- How do we publish simple content via a
- How are we securing that
- Intents, Filters, and Broadcasts
- What are "Intent filters"?
- What happens if we try to start up an activity, and there is no matching activity?
- What happens if we try to start up an activity, and there are several matching activities?
- What is a broadcast? How do we send them? How do we receive them?
- How do we get control at boot time, and what does the "Force Stop" button have to do with it?
- Service Concepts
- What is a service, and why do we care?
- How do we set up a service?
- How do we use a service, via the command pattern?
- How do we use a service, via the binding pattern?
- How do we communicate from the service back to its client(s)?
- Remote Services and the Binding Pattern
- OK, how does binding work with services, for real?
- How do we make a service be accessible from other apps?
- How do we publish an API for our service, for use by other apps?
- How do we bind to services from other apps, and what does security have to do with it?
- Testing Basics
- How do we test our UIs? Or our other classes?
- How do we do integration testing of our UIs?
- What is the Test Monkey? Is it like that Samsonite gorilla from 1970's TV commercials?
- What other testing options do we have?
- More on Gradle
- Why did we talk so much about Gradle back in the beginning of this course?
- What is a build type, and how do we use it?
- What is a product flavor, and how do we use it?
- How do we keep confidential data, such as keystore passwords, out of our Gradle build files?
To discuss training content, including
creating a custom agenda for your organization,
feel free to contact Mark Murphy.