Android
Articles on Android performance, Kotlin optimization, Gradle builds, and building responsive Android apps.
Android engineering articles 841–870 of 942
Reactive Camera Implementation with Camera2 API on Android - Part 1
Arkady Gamza from Bumble Tech tackles Android's notoriously complex Camera2 API by wrapping it in RxJava2 observables. The result? A reactive camera implementation that turns callback hell into elegant, readabl...
Kotlin for Mobile Development
Martynas Jurkus from Vinted reveals how his team bet on Kotlin two years before Google officially backed it. The result? A complete transformation of their Android development workflow.
Detecting List Items Observed by User
Zalando's engineering team faced a tricky challenge: how do you know if a user actually *saw* an item in a scrolling list, not just flew past it?
Mobile Crash Reporting at LinkedIn
LinkedIn built their own crash reporting system instead of using third-party tools. Here's why that decision paid off.
Messaging Sync: Scaling Mobile Messaging at Airbnb
Zhiyao Wang and the Airbnb team tackled a massive problem: their mobile inbox was loading like a 2001 webmail client. With 100k+ messages per hour, every tap meant a network request, killing UX on slow connecti...
Writing a Custom Android Component for React Native
Guillermo Orellana from Bumble's tech team tackles React Native's biggest question: Can you actually integrate complex native Android components without losing your mind?
Building a Dynamic Mobile CI System
Shopify slashed their mobile CI deploy times from 2.5 hours to 15 minutes. Here's how they built a system that scales horizontally without breaking a sweat.
Breaking the Limitations of Calabash Android
Rajdeep Varma from Badoo cracked a problem that's plagued Android test automation for years. His solution lets Calabash test anything on the device, not just your app's UI.
Breaking the Limitations of Calabash Android
Rajdeep Varma from Badoo cracked a problem that's plagued mobile test automation for years: Calabash could only test what's inside your app, while Appium couldn't use backdoor methods. His solution? Merge the b...
Implementing Android Navigation Drawer and Status Bar in React Native
Callstack tackles one of React Native's most frustrating Android UX challenges: making the navigation drawer and status bar play nicely together. Spoiler: the default behavior is broken.
Better List Views
React Native just killed ListView. The new list components solve memory leaks, stale rows, and ignored bugs that plagued mobile developers for years.
Android Handler Memory Leaks
Dima Voronkevych from Bumble's Android team reveals how a simple postDelayed() call can silently keep 7 Activity instances alive in memory. Even with garbage collection, your app might be one rotation away from...
Android Handler Memory Leaks
Dima Voronkevych from Bumble's Android team reveals how a simple Handler.postDelayed() call created 7 Activity instances in memory when only 1 should exist. The garbage collector couldn't save them.
Using Native Driver For Animated
Your React Native animations are probably running on the wrong thread. Here's how one config flag can eliminate frame drops when JavaScript gets blocked.
Mobile App Testing Tips and Tricks
Alexander Khozya from Bumble's mobile QA team shares battle-tested strategies that caught critical bugs before millions of users did. His team's approach to testing saved them from costly re-submissions and use...
Dockerizing Calabash Android Testing on macOS
Rajdeep Varma from Badoo (now Bumble) tackled a problem that sounds impossible: running Android device tests inside Docker on macOS when Docker can't even see USB devices. The workaround? Brilliantly hacky.
Motion Recognition for Fitness on Android Wear
Edward Dale from Freeletics shows how a simple peak detection algorithm can count pushup reps on Android Wear with surprising accuracy. The secret? Freeletics-style pushups include a hand lift that creates a pe...
Four Load Testing Mistakes Developers Love to Make
Klarna Engineering found that developers' optimism about their own code creates predictable load testing blind spots. Here are the four mistakes that keep biting teams before Black Friday.
A/B Testing using Google’s Staged Rollouts
Twitch discovered that Google Play's staged rollouts create biased user groups, breaking standard A/B testing assumptions. Here's how they adapted.
Checkstyle on Changed Files with Gradle
Marc Prengemann from mobile.de faced 30,000+ Checkstyle violations in their Android codebase. Instead of grinding to a halt, his team found a smarter way forward.
Easier Upgrades
React Native upgrades used to be a nightmare of merge conflicts and lost changes. The React Native team just changed that with a clever Git-based solution.
Epoxy: Airbnb's View Architecture on Android
Eli Hart from Airbnb reveals how they eliminated RecyclerView boilerplate while building complex screens with 8+ view types. Their solution handles diffing, animations, and state management automatically.
Engineering the Architecture Behind Uber’s New Rider App
Uber completely rewrote their rider app from scratch. Here's why they threw away years of code and started over.
Crashcan: Building a Better Mobile Crash Analytics Platform
Etsy built Crashcan, their own mobile crash analytics layer on top of a third-party provider. Why not just use the vendor's dashboard?
React Native 0.36: Headless JS, Keyboard API, and More
React Native 0.36 just dropped with game-changing background task support. If you've been waiting to run JavaScript while your app sleeps, this is your moment.
Offline First: Introducing TrueTime for Swift and Android
Instacart shoppers were losing minutes in grocery store dead zones. The culprit? You can't trust device clocks when every second counts.
Mobile Compose Refresh Architecture
Madeleine Chercover from Hootsuite tackled a 3,500-line Android activity that had become a maintenance nightmare. Her solution? A modular MVVM architecture that makes features easy to add and hard to break.
Android Schemas for Mobile Development
Dan Lew from Atlassian reveals how Trello Android went from dropping the entire database on every schema change to implementing proper upgrades. The reason? They were secretly building offline mode.
Improving Chat Rendering Performance
Twitch was dropping frames like crazy. Chat messages were taking 200ms to render when they had just 16.667ms to work with for smooth 60fps video.
Dynamic App Content: An Introduction to Truly Native Apps
Zalando faced an impossible triangle: daily content updates, premium native UX, and distributed teams without native experience. Their solution? Server-driven UI before it was cool.