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.

Detailed Agenda

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?
  • Adapter and AdapterView
    • What is an AdapterView, and what role does it fill?
    • What is an Adapter?
    • How do we create a basic Adapter for a ListView?
    • How do we customize that Adapter to make the ListView rows look the way we want?
  • WebView
    • What is WebView, and what powers it?
    • How do we load HTML content into a WebView?
    • How do we find out about events, like when the page is done loading or when JavaScript tries to pop up a dialog?
  • 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 ViewPager
    • 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?
  • Threads
    • 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 AsyncTask?
    • What are other ways of having background threads coordinate with the main application thread?
  • Permissions
    • 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?
  • Databases
    • 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 ContentProvider?
    • What sorts of content does a ContentProvider provide, since ContentProviders provide content?
    • How do we publish simple content via a Uri?
    • How are we securing that ContentProvider?
  • 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.