- Syllabus, teaching methodology and bibliography.
- Evaluation
- Resources
For reference:
- Android application development: introduction
- Inversion of Control
- Activity
- Specifying its UI through a resource layout
- The Legacy Android View hierarchy (overview)
- View Binding
- The Kotlin programming language
For reference:
- The Activity as an execution host
- Building a UI using the legacy Android View hierarchy: introduction
For reference:
- Application resources
- Language dependent: localization
- Building a UI using the legacy Android View hierarchy: continued
- Connectivity
- Permissions
- Performing network operations using Retrofit and GSON
- An alternative: Volley
- The Activity as an execution host, continued
- Consequences of performing asynchronous operations (e.g. network requests)
- View model as an alternative execution host
- Overview
- Dependencies:
For reference:
- Practical class dedicated to the course's project
- Android application reference architecture
- Android application components: Application
- Motivation
- Lifecycle
- Building Android applications:
- Navigation between Activities
- Options Menu and menu resource
For reference:
- Practical class dedicated to the course's project
- Characterizing state
- UI state (a.k.a view state) and application state
- Preserving view state across system initiated process terminations
- Activity lifecycle, revisited
- onCreate(), onSaveInstanceState() and onRestoreInstanceState()
- Parcelable contract
- Motivation
- Manual implementation
- Implementation with @Parcelize (a Parcelable implementation generator)
- Saved State module for ViewModel
For reference:
- Practical class dedicated to the course's project
- Practical class dedicated to the course's project
- Practical class dedicated to the course's project
- Practical class dedicated to the course's project
- Practical class dedicated to the course's project
- State management: persistent application state
- Building the UI: Displaying lists of items
- Adapting data to views (Adapter pattern)
- Using Recycler View
- View Holder pattern
- View recycling
For reference:
- State management: persistent application state, continued
- Persisting application state in a local relational DB using Room, continued
- Android threading model, revisited
- Considerations on the design of android applications
- Android application reference architecture, revisited For reference:
- Lecture video (in Portuguese)
- Considerations on the design of Android applications, continued
- Android application reference architecture, revisited
- State management: persistent application state, continued
- Persisting application state in a local relational DB using Room, continued
- Type mappings in Room: TypeConverters
- Android threading model, revisited
- LiveData as a means to signal asynchronous operations completion
- Persisting application state in a local relational DB using Room, continued
- For reference:
- Considerations on the design of Android applications, continued
- Android application reference architecture, revisited
- Performing background work
- Motivation
- Definition of background work (i.e. non user facing)
- Resource management, revisited
- Introduction to the Work Manager API
- Purpose and motivation
- For reference:
- Performing background work
- Motivation
- Definition of background work (i.e. non user facing)
- Resource management, revisited
- Tradicional Android application architecture using BroadcastReceiver and Service components
- Introduction to the Work Manager API, continued
- Purpose and motivation
- Worker definitions and corresponding threading models
- For reference:
- Part 1 - Considerations on the design of android applications
- Demo: The Tic-Tac-Toe application
- Part 2 - Laboratory
- Practical class dedicated to the course's project
- For reference:
- Android application development: a glimpse of the near future
- Introduction to Jetpack Compose
- Purpose and motivation
- Programming model
- @Composable functions: State -> @Composable -> UI
- Rules for composable functions: purpose and motivation
- State management building blocks:
remember
andmutableStateOf
- Execution model
- For @Composable functions
- For UI event handling
- For reference:
- Practical class dedicated to the course's project
- Android application development: a glimpse of the near future
- Introduction to Kotlin Coroutines
- Purpose and motivation
- Suspending functions
- Coroutine builders, corountine scopes and dispatchers (introduction)
- The official docs:
- For reference:
- Practical class dedicated to the course's project