# anr

Published articles for anr.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Tinder cuts app cold starts by 47% with new R8 Configuration Analyzer

DevFeed: [Tinder cuts app cold starts by 47% with new R8 Configuration Analyzer](<https://devfeed.tech/articles/tinder-cuts-app-cold-starts-by-47-with-new-r8-configuration-analyzer-22698.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/tinder-app-cold-start-r8-configuration-analyzer.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-18T18:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [R8](<https://devfeed.tech/topics/r8.md>), [Android](<https://devfeed.tech/topics/android.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [audit](<https://devfeed.tech/topics/audit.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [anr](<https://devfeed.tech/tags/anr.md>), [audit](<https://devfeed.tech/tags/audit.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [obfuscation](<https://devfeed.tech/tags/obfuscation.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [r8](<https://devfeed.tech/tags/r8.md>)

### AI overview

This developer case study explains how Tinder used the R8 Configuration Analyzer to identify and remove keep-rule blockers in its Android application. The reported results were a 47% reduction in cold-start time, a 28.98% reduction in download size to 61.5 MB, and a 28% reduction in user-perceived ANRs. The article also describes analyzer metrics for shrinking, optimization, and obfuscation, along with an R8 Analyzer skill for agentic development workflows.

### Source excerpt

Posted by Ajesh R Pai, Developer Relations Engineer, Ulises Uriel Verduzco Diaz, Software Engineer, Tinder, and Tracy Agyemang, Product Marketing Manager Tinder is on a mission to power and inspire real connections by making meeting easy and fun for every new generation of singles. However, as their Android application codebase grew in size, so did its complexity. Prior to their latest optimization efforts, approximately 70% of the application was not optimized, carrying 17 dex files,including three dedicated just to startup. Although they had enabled R8, much of its optimization potential was blocked due to keep rules, and the team was unable to identify which specific rules were preventing optimization. To reduce startup time and decrease user-perceived Application Not Responding (ANR) errors, Tinder turned to the new R8 Configuration Analyzer to tackle these challenges. By utilizing the R8 Configuration Analyzer, Tinder successfully identified and removed unintentional optimization blockers. The results were immediate and impactful: Tinder achieved a 47% reduction in app cold starts, shrank their app download size by 28.98% (down to 61.5 MB), and reduced user-perceived ANRs by 28%. Configuration analyzer The R8 Configuration Analyzer shows R8 optimization by tracking shrinking, optimization, and obfuscation scores to show available refinement areas. It shows the broad, redundant, or obsolete keep rules, including those from external libraries so that you can analyse the keep rule impact and refine the keep rules. Key metrics shown in Configuration Analyzer include: Shrinking Score: Code percentage available for R8 shrinking. Optimization Score: Code percentage open to optimization (for example, method inlining, horizontal class merging). Obfuscation Score: Percentage of classes, methods and fields that can be renamed by R8 to decrease size. Use the analyzer to audit keep rules and their impacts: Find broad rules: Narrow the scope of package-wide rules that restri

## Monitoring Android Vitals with the Play Developer Reporting API

DevFeed: [Monitoring Android Vitals with the Play Developer Reporting API](<https://devfeed.tech/articles/monitoring-android-vitals-with-the-play-developer-reporting-api-25945.md>)

Original publisher: [Read original article](<https://medium.com/google-developer-experts/monitoring-android-vitals-with-the-play-developer-reporting-api-85edabb772a9?source=rss-cbfc736ddcd3------2>)

Author: Julien Salvi

Published: 2026-03-19T12:41:51Z

Content type: tutorial

Language: en

Sources: [Stories by Julien Salvi on Medium](<https://devfeed.tech/sources/stories-by-julien-salvi-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [API](<https://devfeed.tech/topics/api.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [CI/CD Pipeline](<https://devfeed.tech/topics/ci-cd-pipeline.md>), [Google Cloud Platform (GCP)](<https://devfeed.tech/topics/google-cloud.md>), [Slack](<https://devfeed.tech/topics/slack.md>)

Tags: [aircall](<https://devfeed.tech/tags/aircall.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [anr](<https://devfeed.tech/tags/anr.md>), [api](<https://devfeed.tech/tags/api.md>), [ci-cd-pipeline](<https://devfeed.tech/tags/ci-cd-pipeline.md>), [crash](<https://devfeed.tech/tags/crash.md>), [google-play-developer](<https://devfeed.tech/tags/google-play-developer.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [reporting](<https://devfeed.tech/tags/reporting.md>), [slack](<https://devfeed.tech/tags/slack.md>)

### AI overview

This tutorial explains how Aircall uses the Google Play Developer Reporting API in a Gradle task to retrieve Android Vitals, including ANR and crash metrics, and deliver daily health reporting to Slack. It covers metric-set queries, timeline aggregations, service-account authentication, data modeling, and health thresholds.

### Source excerpt

At Aircall, we built an automated reporting tool that fetches our Android Vitals metrics thanks to the Play Developer Reporting API and delivers a daily health dashboard straight to Slack. All of this powered by a simple Gradle task. Discovering the API The Google Play Developer Reporting API gives programmatic access to the same quality metrics you see in the Google Play Console. It covers the core Android Vitals: ANR rate, crash rate, slow start rate, and stuck background wakelocks, the signals Google uses to determine whether your app meets the bad behavior thresholds. The API is organized around metric sets that you query with a timeline specification. Each metric set returns daily, 7-day, and 28-day user-weighted aggregates, giving you the full picture from short-term regressions to long-term trends. The key advantage over scraping the Console UI is that you can automate the entire flow and integrate it into your existing CI/CD pipeline. You will find the complete API reference in the official documentation. Build with Play VitalsSetting up the dependency We chose to implement this as a Gradle task inside our build-logic module. This keeps the reporting logic close to the project without polluting the app code. First, let's add the dependency: # libs.versions.toml googleApiReporting = "v1beta1-rev20230803-2.0.0" buildLogic-plugin-google-play-developer-reporting = { module = "com.google.apis:google-api-services-playdeveloperreporting", version.ref = "googleApiReporting" } Which can then be added to the build.gradle.kts of your build-logic module: dependencies { // API to get Google Play store vitals metrics implementation(libs.buildLogic.plugin.google.play.developer.reporting) }Authenticating with a Service Account To access the API, you need a Google Cloud Service Account with the Play Developer Reporting scope. We pass the credentials as an environment variable to keep secrets out of the repository. The Reporting client initializes the API with these credentia

## How Blinkit's Droid Dex Adapts Android App Performance to Device Capabilities

DevFeed: [How Blinkit's Droid Dex Adapts Android App Performance to Device Capabilities](<https://devfeed.tech/articles/how-blinkit-cracked-android-s-performance-puzzle-with-droid-dex-20084.md>)

Original publisher: [Read original article](<https://lambda.blinkit.com/droid-dex-1f807901626f?source=rss----42df4a1e8725---4>)

Author: Karan Gourisaria

Published: 2025-06-26T07:03:41Z

Content type: article

Language: en

Sources: [Grofers](<https://devfeed.tech/sources/grofers.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Development](<https://devfeed.tech/topics/development.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>)

Tags: [adaptive](<https://devfeed.tech/tags/adaptive.md>), [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [anr](<https://devfeed.tech/tags/anr.md>), [app-performance](<https://devfeed.tech/tags/app-performance.md>), [caching](<https://devfeed.tech/tags/caching.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [fragmentation](<https://devfeed.tech/tags/fragmentation.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [performance](<https://devfeed.tech/tags/performance.md>), [real-time](<https://devfeed.tech/tags/real-time.md>)

### AI overview

This article describes Blinkit's Droid Dex, a system that classifies device performance and adapts Android app behavior accordingly. It presents device fragmentation as a source of out-of-memory errors, slower screen rendering, and ANRs, and describes adaptations such as concurrency limits, caching levels, power-saving mode, and simplified animations.

### Source excerpt

How Blinkit Cracked Android's Performance Puzzle with Droid DexAdaptive real-time performance tuning -- fewer ANRs, smoother UX, and smarter device-specific optimization Picture this: Your app runs buttery-smooth on Pixel 7 Pro while throwing ANRs on a Redmi Note 4. Users on a Fold 6 have to experience the same janky transitions as those on a INR 6,000 device. Sounds familiar? Welcome to Android development in 2025, where device fragmentation is one of the biggest challenges. This is the story of how Blinkit solved Android's most notorious problem: intelligent, real-time performance adaptation. 📱 The Problem: One Codebase, Infinite Devices Device Fragmentation isn't just a developer headache -- it's a business liability. At Blinkit, we serve millions of users across India's most diverse Android ecosystem, from ultra-budget to flagship devices. Consider these jaw-dropping stats from our production data: 57% of total OOMs occur on devices with less than 4GB of RAM The average time to render key screens is 2.5 times slower on budget phones compared to flagships 20% of users drop off after experiencing a single ANR Traditional solutions? They're all broken: 🔴 The Conservative Trap: Design for the weakest device. Result? Premium users get a subpar experience. 🔴 The Aggressive Fallacy: Optimize for flagships. Result? 60% of users face OOMs and ANRs. We needed something better -- something smarter, that could make apps think about performance in real-time. 🔥 Introducing: Droid Dex Imagine your app could sense the device it's running on and instantly adapt: "This phone can handle 4 concurrent videos, aggressive caching, and premium transitions" or "This device needs power-saving mode, minimal caching, and simplified animations"? That's exactly what Droid Dex does. It's not just another performance library -- it's an intelligent performance classification system that lets your app adapt to its environment. // Make your app performance-aware with a single call DroidDex.getPerformanc

## Stressing the JVM GC on Android

DevFeed: [Stressing the JVM GC on Android](<https://devfeed.tech/articles/stressing-the-jvm-gc-on-android-28537.md>)

Original publisher: [Read original article](<https://www.amanjeet.me/stressing-the-jvm-gc-on-android/>)

Author: Amanjeet Singh Gurtatta

Published: 2024-03-10T08:49:55Z

Content type: tutorial

Language: en

Sources: [Amanjeet Singh](<https://devfeed.tech/sources/amanjeet-singh.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>), [now-in-android](<https://devfeed.tech/topics/now-in-android.md>)

Tags: [adb](<https://devfeed.tech/tags/adb.md>), [android](<https://devfeed.tech/tags/android.md>), [android-vitals](<https://devfeed.tech/tags/android-vitals.md>), [anr](<https://devfeed.tech/tags/anr.md>), [fragmentation](<https://devfeed.tech/tags/fragmentation.md>), [gc](<https://devfeed.tech/tags/gc.md>), [java](<https://devfeed.tech/tags/java.md>), [leak](<https://devfeed.tech/tags/leak.md>), [memory](<https://devfeed.tech/tags/memory.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-performance](<https://devfeed.tech/tags/mobile-performance.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>), [outofmemory](<https://devfeed.tech/tags/outofmemory.md>), [performance](<https://devfeed.tech/tags/performance.md>), [stress](<https://devfeed.tech/tags/stress.md>), [stresstest](<https://devfeed.tech/tags/stresstest.md>)

### AI overview

This tutorial describes GCStress, a Java application that deliberately creates garbage-collection pressure through repeated random byte-array allocations and cache removals. It explains how to integrate it into Google's Now in Android app, trigger it with an Android broadcast and adb, and observe effects such as skipped UI frames, possible ANRs, and potential out-of-memory errors.

### Source excerpt

This post talks about a way to stress Java garbage collector.

## ANR internals: touch dispatching through the view hierarchy

DevFeed: [ANR internals: touch dispatching through the view hierarchy](<https://devfeed.tech/articles/anr-internals-touch-dispatching-through-the-view-hierarchy-25618.md>)

Original publisher: [Read original article](<https://blog.p-y.wtf/anr-internals-touch-dispatching-through-the-view-hierarchy>)

Author: Pierre-Yves Ricau

Published: 2023-09-14T16:32:24Z

Content type: tutorial

Language: en

Sources: [Py's blog](<https://devfeed.tech/sources/py-s-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [anr](<https://devfeed.tech/tags/anr.md>), [compose](<https://devfeed.tech/tags/compose.md>), [deep-dive](<https://devfeed.tech/tags/deep-dive.md>), [internals](<https://devfeed.tech/tags/internals.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>), [performance](<https://devfeed.tech/tags/performance.md>), [thread](<https://devfeed.tech/tags/thread.md>)

### AI overview

This first article in a series on Android ANR internals examines how touch and input events move through the view hierarchy. It explains that input dispatching can trigger an ANR when an app does not respond within five seconds, and compares traditional view listener dispatch with Compose click-lambda dispatch.

### Source excerpt

I'm writing a blog series on ANR internals, where I'll use ANRs as an excuse to learn more about how various parts of Android work. This first article is focused on touch dispatching through the view hierarchy. ANR triggers How is an "Application No...

## OkLayoutInflater: Improving Android XML Layout Inflation with Parallel Coroutines

DevFeed: [OkLayoutInflater: Improving Android XML Layout Inflation with Parallel Coroutines](<https://devfeed.tech/articles/oklayoutinflater-37405.md>)

Original publisher: [Read original article](<https://medium.com/okcredit/oklayoutinflater-3c5cd93c6ebc?source=rss----40ea5327aac7---4>)

Author: Anjal Saneen

Published: 2022-10-26T01:27:02Z

Content type: tutorial

Language: en

Sources: [OkCredit - Medium](<https://devfeed.tech/sources/okcredit-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [XML](<https://devfeed.tech/topics/xml.md>), [Code](<https://devfeed.tech/topics/code.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [IO](<https://devfeed.tech/topics/io.md>), [callback](<https://devfeed.tech/topics/callback.md>), [interface](<https://devfeed.tech/topics/interface.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [anr](<https://devfeed.tech/tags/anr.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [file](<https://devfeed.tech/tags/file.md>), [io](<https://devfeed.tech/tags/io.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>), [memory](<https://devfeed.tech/tags/memory.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [parallelism](<https://devfeed.tech/tags/parallelism.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This tutorial explains how OkLayoutInflater addresses limitations in AndroidX AsyncLayoutInflater. It describes the existing implementation's sequential background inflation and presents a coroutine-based approach intended to use parallelism based on CPU cores, helping recycler view items load and scroll faster.

### Source excerpt

The loading of large XML layouts is one of the major performance bottlenecks in android. Loading XML layout into memory through IO operations and parsing views through reflection can be expensive. This is especially true when the XML file is too large or when initializing the layout view takes a while. We know that when the main thread performs some time-consuming operations, it may cause the page to freeze, and even more, serious ANR may occur. Androidx AsyncLayoutInflater helps to load those layouts asynchronously. However, we found that it has some limitations. The goal of this blog post is to explain how OkLayoutInflater addresses these limitations. Source code analysis of AndroidX AsyncLayoutInflater https://android.googlesource.com/platform/frameworks/support/+/89f7eba/v4/java/android/support/v4/view/AsyncLayoutInflater.java Source code is short and easy to understand with only a few lines of code. In the inflate method, it creates an InflateRequest object and stores variables such as resid, parent, callback, etc. Then it calls enqueue to add the request to the InflateThread queue. The main purpose of InflateThread is to add requests to the blocking queue and perform BasicInflater.inflate operations in order. Regardless of inflating success or failure, the request message will be sent to the main thread for processing. The BasicInflater Inherited from LayoutInflater. In OnCreateView these prefixes are loaded on the layout. At last, mHandlerCallback implements handleMessage which executes the operation on main thread, and there is a fallback mechanism, that is when the child thread inflates fails. it will continue to inflate on the main thread, and finally, gives a callback to the main thread through the OnInflateFinishedListener interface. The limitations of AsyncLayoutInflater and how we improve it Single thread to do all the inflate work AsyncLayoutInflater has this major limitation. This was the main reason for creating a custom implementation. One of our r

## Diagnosing Android ANRs with Runtime Traces and APM Data

DevFeed: [Diagnosing Android ANRs with Runtime Traces and APM Data](<https://devfeed.tech/articles/demystifying-the-anrs-puzzle-28528.md>)

Original publisher: [Read original article](<https://www.amanjeet.me/demystifying-the-anrs-puzzle/>)

Author: Amanjeet Singh Gurtatta

Published: 2022-01-21T17:52:38Z

Content type: tutorial

Language: en

Sources: [Amanjeet Singh](<https://devfeed.tech/sources/amanjeet-singh.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [observability](<https://devfeed.tech/topics/observability.md>), [Application Performance Management (APM)](<https://devfeed.tech/topics/apm.md>), [debug](<https://devfeed.tech/topics/debug.md>), [Traces](<https://devfeed.tech/topics/traces.md>), [Crashlytics](<https://devfeed.tech/topics/crashlytics.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-vitals](<https://devfeed.tech/tags/android-vitals.md>), [anr](<https://devfeed.tech/tags/anr.md>), [apm](<https://devfeed.tech/tags/apm.md>), [crashlytics](<https://devfeed.tech/tags/crashlytics.md>), [debug](<https://devfeed.tech/tags/debug.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [mobile-performance](<https://devfeed.tech/tags/mobile-performance.md>), [trace](<https://devfeed.tech/tags/trace.md>)

### AI overview

This article explains why Android Application Not Responding events are difficult to reproduce and diagnose. It describes how the Android runtime responds with SIGQUIT and ANR traces, then introduces approaches APM libraries can use to collect ANR data, including watchdog monitoring.

### Source excerpt

Solving the ANRs Riddle on Android

## Reducing ANR errors in an Android application by investigating Application.onCreate and Firebase Cloud Messaging

DevFeed: [Reducing ANR errors in an Android application by investigating Application.onCreate and Firebase Cloud Messaging](<https://devfeed.tech/articles/anrs-2-23633.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/539728/>)

Author: lukaville (Badoo)

Published: 2021-01-28T15:14:55Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Firebase](<https://devfeed.tech/topics/firebase.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [anr](<https://devfeed.tech/tags/anr.md>), [app-startup](<https://devfeed.tech/tags/app-startup.md>), [cloud-messaging](<https://devfeed.tech/tags/cloud-messaging.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [google-play](<https://devfeed.tech/tags/google-play.md>)

### AI overview

This second part of a technical article examines ANR errors in an Android application. The authors found that about 60% of ANRs occurred during Application.onCreate and concluded that long execution, often involving Firebase Cloud Messaging, was likely the main cause.

### Source excerpt

В первой части статьи мы поговорили о том, что такое ANR (Application Not Responding), и рассмотрели несколько способов сбора информации об этих ошибках. А сегодня я расскажу о проблемах, которые мы обнаружили в нашем приложении, о том, как мы их исправляли и что из этого в итоге получилось. Время запуска приложения Первое, что можно сделать, чтобы уменьшить количество ANR-ошибок, -- попробовать найти самые частые причины их возникновения. Начать можно с консоли Google Play -- проанализировать самые большие группы ошибок. Читать далее

## \[Перевод\] Приложение отвечает: как мы уменьшили количество ANR-ошибок в шесть раз. Часть 1, про сбор данных

DevFeed: [\[Перевод\] Приложение отвечает: как мы уменьшили количество ANR-ошибок в шесть раз. Часть 1, про сбор данных](<https://devfeed.tech/articles/anr-1-23632.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/539524/>)

Author: lukaville (Badoo)

Published: 2021-01-27T14:15:01Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [anr](<https://devfeed.tech/tags/anr.md>), [anr-reporting](<https://devfeed.tech/tags/anr-reporting.md>), [badoo](<https://devfeed.tech/tags/badoo.md>), [crash-reporting](<https://devfeed.tech/tags/crash-reporting.md>), [google](<https://devfeed.tech/tags/google.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This first part of a two-article series explains Android ANR errors, why they affect application responsiveness and potentially Google Play visibility, and how to monitor them. It introduces the causes of ANRs, including prolonged work on the main UI thread, and previews Badoo's approaches to reducing them.

### Source excerpt

Пожалуй, одна из худших проблем, которая может случиться с вашим приложением, -- ошибка ANR (Application Not Responding), когда приложение не отвечает. Если таких ошибок много, они могут негативно влиять не только на пользовательский опыт, но и на позицию в выдаче Google Play и фичеринг. В начале прошлого года количество ANRs в приложении Badoo превышало порог "Bad Behaviour" в Google Play. Поэтому мы собрали команду для решения этой проблемы и потратили несколько месяцев, экспериментируя с разными подходами. В результате мы смогли уменьшить количество таких ошибок более чем в шесть раз. В этой серии из двух статей я расскажу о том, как нам это удалось, что дало наибольший эффект и как вы можете использовать эти подходы в своём приложении. В первой части мы поговорим об основах: что представляет собой ошибка ANR и как её лучше отслеживать. Если вы уже знакомы с этой темой, предлагаю перейти ко второй части, в которой я расскажу о наших способах решения этой проблемы. Читать далее