Last week we hosted the first-ever Android @Scale in New York City, bringing together expert Android developers to discuss the range of technical challenges that comes with serving millions or even billions of people.
More than 250 attendees gathered in Midtown West to hear from engineering leaders at Audible, Facebook, Google, Instagram, Oscar Health, Pinterest, Spotify, Tumblr, and Twitter, who all shared a range of approaches, challenges, and assessments around building for Android.
Automated Testing Practices @ Scale
Waseem Ahmad, Facebook
Waseem discussed the testing practices and specific frameworks used by Android engineers at Facebook to keep the quality and stability of the company's codebase high.
Paging with Room
Will Baumann and Pedro Veloso, Audible
Will and Pedro shared strategies on how to maximize the new Android Architecture Components, such as Room and the Paging Library, to relieve the burdens on the user experience queries that tend to fetch thousands of entities when only a few dozen are needed.
Video In News Feed Using Litho
Udi Cohen, Facebook
Udi revealed how Facebook's mobile engineering team developed more efficient ways to render videos on Android by using Litho, Facebook's open source UI rendering library. This helped improve the performance, efficiency, extensibility, and maintainability of Facebook's video implementation over one built with traditional Android views. The video component improved the company's scrolling performance by up to 20% across the Facebook for Android app.
Serial: Improving Data Serialization on Android
Alison Fauci, Twitter
Alison shared the motivation behind writing a custom serialization framework to better control and optimize how the Twitter for Android team serializes data within the company's app. Since Twitter open-sourced this library, viewers were given a useful introduction on how to adopt it into their codebases and contribute to the project.
App Modularization and Module Lazy-Loading
Mona Huang, Instagram
Mona provided viewers with insight into a recent project to modularize Instagram's Android codebase. A well-modularized codebase has several benefits, including the ability to have full control over when code is accessed and loaded into memory.
Graywater: A Framework for Fast Scroll Performance
Eric Leong, Tumblr
Eric discussed Graywater, Tumblr's RecyclerView library for decomposing large list items to improve scroll performance. He described how to build an advanced, flexible list implementation backed by Graywater and how to utilize Dagger 2 multi-binding to configure Graywater for different screens.
Migrating Apps To React Native from Android (and iOS)
Yang Mou, Oscar Health
Yang described how Oscar Health migrated its Android and iOS apps to React Native to greatly improve feature velocity. He presented the team’s learnings, “gotcha” moments, best practices for hybrid native/React Native apps, and patterns for routing and navigation that allowed the team to gradually migrate the apps piece by piece.
Mobius: A Loopy UI Architecture
Ahmed Nawara, Spotify
Ahmed noted that when building mobile features, engineers often need to do a lot of state and side effect management. He shared how Mobius helped his team structure code at Spotify in a way that maximizes testability and separation of concerns, by adopting functional programming principles.
Eliminating Long-Tail Jank With StrictMode
Kurt Nelson, Google
Kurt provided insight into StrictMode, a developer tool most commonly used to catch accidental disk or network access on the application's main thread, where UI operations are received and animations take place. He revealed how keeping disk and network operations off the main thread makes for much smoother, more responsive applications. Kurt also discussed how keeping the main thread in an engineer's application responsive can also prevent ANR dialogs from being shown to users.
Model-View-Presenter @ Scale
Sam Thompson and Zach Westlake, Pinterest
Sam and Zach revealed how their team began a long-term project to incrementally rewrite Pinterest in the Model-View-Presenter (MVP) architecture to move faster and promote app stability. They revealed initial goals, implementation, and the challenges the team faced in porting the app to MVP.