ANR’s are some of the most less understood phenomenon of Android development. This article let’s you know the ways to debug an ANR when you have no options left.
But first, What is an ANR and when does it occur?
Answer : It’s all about the UI/Main thread
The Android Developer website says that an ANR occurs,
Almost every Android app would need to persist data. With this comes the challenge of choosing between various techniques of storing data. There are different ways of storing data in an Android app. And there is no single solution for all data storage requirements. This is where a data policy for your app can help maintain the health of the app as it scales.
There are a few questions that we need to ask ourselves when dealing with persistent data.
A narrative about my 10 years of experience developing on the Android Platform
Java Mobile Development :
It was during my Post Graduate(M.Tech in Information Technology — 2009) when I was first introduced to Mobile Application Development by my professor Navin from SRM University, India. The IDE was Eclipse. It was a surreal experience seeing a mobile simulator for the first time. The development platform was kindly called Java ME. Clicking the Play button on Eclipse and seeing the helloworld app run on a mobile simulator was the first spark which made me like Mobile Development.
A few years ago, when Gojek was scaling internationally, at the forefront of the expansion was our consumer app used by millions of people across Southeast Asia. Needless to say, our engineering team was growing too, and we rapidly increased from 40 to 140+ Android and iOS engineers — all working on the #SuperApp.
Every line of code committed has to go through unit tests, code quality checks, regression tests and other routines to maintain high quality code… You know the drill.
The moment a commit is pushed to the remote branch, a pipeline is triggered in the CI. The…
As mobile teams scale, there are couple of challenges that come in the way. Some of those are
Migrate redBus android app to Android X, and also to upgrade react native to use hermes engine.
How did we do this?
For fun, we decided to make this a military style operation which consisted of 3 stages
When a fellow developer reads through the commits,the commit message should convey the information very clearly and quickly. The following things can be used —
← Start of commit template →
[Fix/Feature/Refactor] : [Type commit title here]
[Type commit explaination here]
Tracking ID : [Type Tracking ID Here]
← End of commit template →
Recently at redBus we adopted In App Update feature.
This was done for the purpose of getting faster adoption of app updates. Faster adoption is very important for a couple of reasons,
A gentle nudge was introduced in the home screen to notify users that an update is available.
This is done in a non intrusive way, so that it does not disrupt the user experience.
Here is our experience
Incident 1 — Slow app load times in LATAM:
redBus app was loading slowly in Peru and Colombia when compared to other countries. We found this using App Start up times on On-Device metrics.
While looking into Firebase Performance Analytics for clues, we identified that it was an API that had a larger latency in Peru and Colombia that caused the slow load.
Analyzing sentiment of Playstore reviews gives a lot of insight into the issues in an App or the experience of the users. This is one of the many experiments we did at redBus to provide a better experience to our users.
We needed a quick and easy to use and deploy environment for this experiment. We needed the following components for this system to work.
Engineer | Android | Manager | Developer Productivity