Please note that this list of topics is based on our standard course offering, evolved from typical industry uses and trends. We'll work with you to tune this course, timing and level of coverage to target the skills you need most. Topics, agenda and labs are subject to change, and may adjust during live delivery based on audience skill level, interests and participation.
Day 1v
1. Android and Model-View-Controller
- Explore MVC architecture in Android development.
- Creating a New Class
- Model-View-Controller and Android
- Updating the View Layer
- Updating the Controller Layer
- Adding an Icon
- Running on a Device
2. The Activity Lifecycle
- Master the intricacies of Android's Activity Lifecycle and its states.
- Rotating GeoQuiz
- Activity States and Lifecycle Callbacks
- Using Logcat
- Temporarily leaving an activity
- Device Configuration Changes
- Creating a landscape layout
3. Persisting UI State
- Learn how to persist UI states using ViewModel and SavedInstanceState.
- Including the ViewModel Dependency
- ViewModel lifecycle and ViewModelProvider
- Saving Data Across Process Death
- ViewModel vs Saved Instance State
Day 2
4. Debugging Android Apps- Quick Review
- Learn debugging skills specific to Android development.
- Exceptions and Stack Traces
- Diagnosing misbehaviors
- Setting breakpoints
- Using Android Lint
5. Your Second Activity
- Learn creating and navigating between multiple activities.
- Setting Up a Second Activity
- Declaring activities in the manifest
- Starting an Activity
- Passing Data Between Activities
- How Android Sees Your Activities
6. Explore Basic UI elements
- Review as text box, buttons, textview,tab bar,list view, listview details, alerts and how to show on a screen etc
- Review advanced UI construction techniques using ConstraintLayout
- Introducing ConstraintLayout
- Introducing the Graphical Layout Editor
- Using ConstraintLayout
- Making list items dynamic
- Styles, themes, and theme attributes
Day 3
7. Databases and the Room Library
– Quick Review
- Room Architecture Component Library
- Creating a Database
- Defining a Data Access Object
- Testing Queries
- Using LiveData
8. Dialogs
- Learn how to create and manage dialog boxes for user interactions
- Creating a DialogFragment
- Showing a DialogFragment
- Passing Data Between Two Fragments
9. Data Binding and MVVM-
- Understand the MVVM architecture and implement data binding
- Different Architectures: Why Bother?
- Creating BeatBox
- Implementing Simple Data Binding
- Wiring Up Assets for Use
- Binding to Data
Day 4
10. HTTP and Background Tasks
- Explore HTTP requests and asynchronous tasks.
- Networking Basics with Retrofit
- Fetching JSON from Flickr
- Displaying Results in RecyclerView
11. Exploring Security and Top Ten Mobile Risks
- Explore actual and potential software vulnerabilities and implement defenses for those vulnerabilities.
- M1: Improper Platform Usage
- M2: Insecure Data Storage
- M3: Insecure Communication
- M4: Insecure Authentication
- M5: Insufficient Cryptography
- M6: Insecure Authorization
- M7: Client Code Quality
- M8: Code Tampering
- M9: Reverse Engineering
- M10: Extraneous Functionality · Improper Platform Usage
12. Provide the Right Permissions
- Understand and implement Android permissions for secure application behavior
- Insecure Data Storage · Insecure Communication
Day 5
13. Enforce secure communication
- Use implicit intents and non-exported content providers
- Apply signature-based permissions
- Disallow access to your app's content providers
- Insecure Authentication (Overview)
- Insufficient Cryptography (Overview) · Insecure Authorization
14. Implicit Intents
- Adding Buttons
- Adding a Suspect to the Model Layer
- Using a Format String
- Using Implicit Intents
- Parts of an implicit intent
- Sending a crime report
- Asking Android for a contact
- Checking for responding activities
15. Unit Testing
- Learn unit testing and audio playback through SoundPool.
- Creating a SoundPool and Accessing Assets
- Loading and Playing Sounds
- Setting Up and Writing Tests
- Data Binding Callbacks and Unloading Sounds
- Challenges and Curiosities: Playback Speed and Mock Testing
- Patterns in Android
- Testing Network Calls
- Best Practices
Bonus Topics / Time Permitting
16. Loopers, Handlers, and HandlerThread
- Explore Android's Looper class and how to use Handlers and HandlerThreads for background tasks.
- Preparing RecyclerView and Download Bytes from URL
- Creating and Managing a Background Thread
- Understanding Messages and Handlers
- Retained Fragments and Thread Lifecycle Awareness
- Challenges and Curiosities: Image Downloading and Lifecycle Observations
17. Broadcast Intents
- Learn how to use Broadcast Intents to communicate between Android components.
- Regular vs Broadcast Intents
- Creating and Registering Standalone and Dynamic Receivers
- Limiting Broadcasts and Passing Data
- Receivers and Long-Running Tasks
- Challenges and Curiosities: Local Events and Fragment Visibility
Additional Topics (Will be covered throughout the class as applicable)
- How to build a framework/static library and add that to Sample Android app.
- How to debug Framework code by adding into Sample Android app.
- What are various ways to store data locally and securely other than database like we have in iOS world keychain and secure enclave. -
- Loading a webpage inside an Android app and manage webview delegates.
- Biometric in Android.
- What are different logging mechanism in Android similar to OSLOG in iOS.
- Crash report management such as how to create and symbolicate.
- How to pass message among different views and between framework and app other than function call back. We have delegate, NSNotification in iOS similar to that what we have in Android.