[ [ "Time", "Description", "_type", "_track", "_product" ], [ "
08:00-10:00
", "

Registration and Breakfast

", "", "", "" ], [ "
10:00-11:00

Keynote

", "

Keynote

Dave Burke, Stephanie Cuthbertson

The keynote kicks off on November 7 at 10AM PST, where you'll hear directly from Dave Burke and others on the present and future of Android development.

", "Keynote", "Theater 1", "" ], [ "
11:00-11:15
", "

Change over

", "", "", "" ], [ "
11:15-11:35

Session

", "

Fun with LiveData

Jose Alcérreca, Yigit Boyar

LiveData is a simple observable data holder that is aware of the lifecycle of the observers. It was designed to avoid memory leaks and null pointer exceptions between an activity or fragment and a ViewModel. \n\nHowever, you can also use LiveData beyond the ViewModel. Components like Room or Workmanager also expose LiveData observables, and you can make your own data sources lifecycle-aware.\n\nIn this talk, we'll deep dive into patterns with LiveData such as the different types of transformations (map, switchMap and MediatorLiveData), handling events and building reactive architectures as well as common antipatterns and code-smells to avoid.

", "Session", "Theater 1", "Jetpack" ], [ "
11:15-11:35

Session

", "

Getting the Most Out of Android Lint

Matthew Gharrity

Android Lint already scans your app for hundreds of common issues, contributing to the code warnings that you see in Android Studio. But Lint can do even more for advanced users. Come to this demo-heavy talk to learn about the less common uses of Lint, which may include: \n

", "Session", "Theater 2", "Android Studio" ], [ "
11:35-11:55

Session

", "

Testing Rebooted (with AndroidX Test)

Yuki Hamada, John Gerrish

The release of androidx.test v1.0 makes testing a first class citizen of Android developer tools. See how a new set of cross platform APIs enable you to write both unit and integration tests that run in any environment and learn of our upcoming plans for future releases.

", "Session", "Theater 2", "Jetpack" ], [ "
11:35-11:55

Session

", "

The Room in the House

Daniel Santiago, Yigit Boyar

Room is Android's persistence library that provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.\n\nThis talk covers some of the new features added to Room since its announcement at I/O 2017 and additionally touches on some of the best practices.

", "Session", "Theater 1", "Jetpack" ], [ "
11:55-12:05
", "

Change over

", "", "", "" ], [ "
12:05-12:10

Lightning Talk

", "

Best Practices Using JNI

Elliot Hughes

JNI is hard. Join the NDK engineering team to understand some of the pitfalls when writing JNI and some of best ways to make your life easier.

", "Lightning Talk", "Theater 1", "Android Studio" ], [ "
12:05-12:10

Lightning Talk

", "

Optimizing User Flows through Login

Sean McQuillan, Jeremy Orlow

Want to increase activation and retention by making your login experience frictionless? In this talk you'll learn about a set of available Android features that can be used by your app to give users a great onboarding experience. Learn how Google Sign In, Smart Lock, Autofill, and Auto Backup work together to give your app a great first launch and reactivation experience.

", "Lightning Talk", "Theater 2", "Google Play Platform" ], [ "
12:11-12:16

Lightning Talk

", "

3 Platforms in 5 Minutes with Kotlin

Wojtek Kaliciński

Have you heard about Kotlin multiplatform? With Kotlin/JS, Kotlin/Native and Kotlin/JVM, you can share your business logic between Android and other platforms. In just 5 minutes we will write a multiplatform utility class.

", "Lightning Talk", "Theater 1", "Kotlin" ], [ "
12:11-12:16

Lightning Talk

", "

Kotlin + Watch Faces

Jeremy Walker

Use Kotlin DSL to cut down the code needed to write a Wear OS watch face from ~600 lines to 15.

", "Lightning Talk", "Theater 2", "Wear OS Kotlin" ], [ "
12:17-12:22

Lightning Talk

", "

Push Notifications: An India Perspective

Amrit Sanjeev

This session highlights some of the issues faced by developers in regions such as India when working with push notification and design patterns used to work around the low delivery rates experienced by apps. \n\nThese techniques are not limited to improving notification delivery rates but also helps to change the perspective that push notifications is not a reliable channel in such markets.\n\nThe session also calls out some of the improvements at the infrastructure layer that have helped to mitigate this problem .

", "Lightning Talk", "Theater 2", "Other" ], [ "
12:17-12:22

Lightning Talk

", "

Draw Me a Rainbow

Nick Butcher

Did you know that VectorDrawables support theme colors, stateful colors and even gradients? Did you know this works back to API14 with AndroidX? Are you getting the most out of your vectors to support different view states, using the same drawables in differently themed screens, or avoiding bloating your app with large illustrations?\n\nThis lightning talk paints a picture of these advanced features of VectorDrawables and how to use them.

", "Lightning Talk", "Theater 1", "Jetpack Platform" ], [ "
12:23-12:28

Lightning Talk

", "

Understand the impact of Generic System Images (GSI)

Hung-ying Tyan

Learn what Treble and Generic System Image (GSI) means to developers.

", "Lightning Talk", "Theater 2", "Platform" ], [ "
12:23-12:28

Lightning Talk

", "

Level Up with Data Binding

Dan Galpin

Data Binding has come a long way, and is now an integrated part of the Architecture Components within Jetpack, thanks to built-in observation of LiveData. Level up with Data Binding and simplify your Android coding.

", "Lightning Talk", "Theater 1", "Jetpack" ], [ "
12:29-12:34

Lightning Talk

", "

Buiding Reliable Apps When Connectivity Is Unreliable

Naheed Vora, Ryan Hamilton

Learn how to build reliable apps when your connectivity is unreliable. Learn about tools to build failure resilient apps, including Cronet / QUIC, Connectivity APIs and Job Scheduler.

", "Lightning Talk", "Theater 2", "Platform" ], [ "
12:29-12:34

Lightning Talk

", "

Performance Analysis Using Systrace

Carmen Jackson

Watch the Android performance team take systraces of your apps and identify potential performance improvements during app startup and other performance-sensitive areas.

", "Lightning Talk", "Theater 1", "Platform" ], [ "
12:35-12:45

Lightning Talk

", "

Best Practices for Building Privacy-Friendly Apps

Parul Soi, Seb Grubb

The mobile landscape and user expectations around privacy are evolving. This talk takes you through privacy best practices that developers need to consider when targeting modern Android releases and Google Play.

", "Lightning Talk", "Theater 1", "Google Play Platform" ], [ "
12:35-12:45

Lightning Talk

", "

Quick Ways to Ensure App Compatibility with Android Autofill

Felipe Leme

The Android 8.0 release introduced the Autofill Framework, a secure and efficient way to enable password managers to automatically enter user data into other apps. Although the Autofill Framework was designed to work without any effort from app developers, there are some simple actions developers can take to improve the autofill worklow, resulting in a better user experience and retention. This lightning talk will demonstrate some of them.

", "Lightning Talk", "Theater 2", "Platform" ], [ "
12:45-14:00
", "

Lunch

", "", "", "" ], [ "
14:00-14:40

Session

", "

Optimize Your App Size with This One Trick

Pierre Lecesne, Phil Adams

Learn how to integrate Android App Bundle and get size savings through config splits and feature modules. We share case studies of apps that have switched to App Bundle already and showcase the adoption progress across the ecosystem so far.

", "Session", "Theater 1", "Google Play" ], [ "
14:00-14:40

Session

", "

Making Android Accessibility Easy

Phil Weaver, Casey Burkhardt, Qasid Sadiq

This talk introduces the basic ideas of Android accessibility. We cover the goals of accessibility, the model Android uses, and the basic mechanics of accessibility like labeling content, having minimum target sizes, and making sure text has good contrast. The talk also discusses how to test for accessibility and resources available when bugs are found. Finally, we share how to support users when doing nonstandard touch event handling and how to use the new ViewCompat APIs that make this much easier than it used to be.

", "Session", "Theater 2", "Jetpack Platform" ], [ "
14:40-14:50
", "

Change over

", "", "", "" ], [ "
14:50-15:10

Session

", "

What's New for App Developers in Android Auto

Rasekh Rifaat, Kodlee Yin

For media app developers, learn how to populate a list of voice-search results (a top requested feature by our users), display your browse tree in grid form (i.e. large album art tiles, which helps dramatically with content identification), and display additional metadata for media selections (e.g. explicit content, downloaded, etc.). \n\nFor messaging app developers, learn how to implement Android's MessagingStyle APIs, which will replace Android Auto's previous CarExtender implementation, and introduce support for group messaging and MMS/RCS in Auto.

", "Session", "Theater 1", "Android Auto Platform" ], [ "
14:50-15:10

Session

", "

Bundling an App in an Instant

Wojtek Kaliciński, Ben Weiss

Android App Bundles and Instant Apps are converging. Does that mean you can instantiate an app bundle? Or would you rather bundle an instant app? HOW DOES THAT WORK? Come find out how to structure your releases to make the most of the two technologies.

", "Session", "Theater 2", "Google Play" ], [ "
15:10-15:30

Session

", "

Developing for Android & Large Screens

Kenneth Ford

Android has the unique ability to run on many different types of devices and form factors. One of the more complex parts of this feature though, is the variety of screen sizes that your application can, and will, run on. In this session, we will focus on larger screens, what it means for your app, and how to bring a great experience to these form factors. We’re going to dive into how to think about layouts for larger screens and talk about the resizing capabilities that are available on some platforms like Chrome OS.

", "Session", "Theater 1", "Platform Jetpack Chrome OS" ], [ "
15:10-15:30

Session

", "

Android Slices Best Practices

Arun Venkatesan, Artur Tsurkan

Based on our experience with 3rd party developers that are integrating with Slices, the presentation shares best practices for implementing Android Slices to be effectively presented on Search, and demonstrates Slices UI for a few verticals - code + demos + slides.

", "Session", "Theater 2", "Platform Jetpack" ], [ "
15:30-16:00
", "

Afternoon Tea Break

", "", "", "" ], [ "
16:00-16:40

Session

", "

What's New With The Android Gradle Plugin

Jerome Dochez, Leo Sei, Chris Warrington, Izabela Orlowska

Join the Gradle engineering team in Android Studio as they walk through a list of best practices to optimize build speed with Gradle.

", "Session", "Theater 1", "Android Studio" ], [ "
16:00-16:40

Session

", "

Building a Great TV App

Benjamin Baxter

Users want content. Android TV offers a wide variety of paths through which apps can surface their prime content directly to the user, regardless of whether or not the user is in the app already. In this talk, we go over the different ways to surface your content in the places users look for it most—the Android TV home screen and Assistant—keeping your content surfaced in a competitive landscape. We dive deep into how to optimize using the content providers for home screen and look at how to bring the goodness of Jetpack in your leanback app.

", "Session", "Theater 2", "Android TV Platform Jetpack" ], [ "
16:40-16:50
", "

Change over

", "", "", "" ], [ "
16:50-17:30

Session

", "

ConstraintLayout Deep Dive

Sean McQuillan, Chris Sinco

In this session you will learn best practices of using ConstraintLayout on Android, particularly covering tips and tricks in the Layout Editor and new features introduced in the 2.0 version. We will go over how to take advantage of those to create UI more efficiently.

", "Session", "Theater 1", "Jetpack Android Studio" ], [ "
16:50-17:30

Session

", "

Android Suspenders

Chris Banes, Adam Powell

So you've heard about Coroutines and you want to see what's so great about them?\n \nThis talk walks you through what coroutines are, and more importantly, the best practices of using them in your app, including how to handle lifecycle changes with Architecture Components, integration with background job processing, and how they can live next to RxJava.

", "Session", "Theater 2", "Kotlin" ], [ "
17:30-17:40
", "

Change over

", "", "", "" ], [ "
17:40-18:00

Session

", "

Getting the Best of On-Device ML with ML Kit

Dong Chen

This talk shows how developers can get the best out of ML Kit, providing various tips of using the APIs. It covers the Base APIs launched at I/O (Text Recognition, Image Labeling, Barcode Scanning, Face Detection) as well as the Custom Model API.

", "Session", "Theater 1", "Other" ], [ "
17:40-18:00

Session

", "

Modern WebView Best Practices

Nate Fischer, Richard Coles, Toby Sargeant

Join the WebView team as they share the best and worst practices through many years and discuss how to use support library to promote best practices.

", "Session", "Theater 2", "Platform Other" ], [ "
18:00-18:20

Session

", "

Modern Android Notifications

Paul Matthews, Jingyu Shi

This talk highlights best practice and anti-patterns when using notifications in modern Android. We will share tips on using notification channels and how to cater for Android Auto and Wear OS by Google with very little effort.

", "Session", "Theater 1", "Platform" ], [ "
18:00-18:20

Session

", "

Low Latency Audio - Because Your Ears Are Worth It

Don Turner

Low latency audio can improve the user experience for many types of apps, from DJing to virtual reality to musical games. In this talk, we demonstrate the newly launched Oboe library for building real-time audio apps by creating a musical instrument app from scratch in C++. We also show techniques for obtaining the best audio latency from the widest range of devices.

", "Session", "Theater 2", "Platform" ], [ "
18:20-22:20
", "

Party

", "", "", "" ] ]