Photo by Simon Mumenthaler on Unsplash

There are many good articles to learn Kotlin Coroutines, this article is not one of them. The purpose of this article is to show you how to offload a task from Main Thread using Coroutines without getting into m̶u̶c̶h any details. One thing I ask is a promise that you will learn Coroutines at your earliest :)

The examples below is for ViewModel class because it’s a good place to start asynchronous task as it has a more stable lifecycle than Activity/Fragment. …


Doesn’t matter how meticulously we plan, there is always going to be a deviation when implementing it.

This is the final article of a five-article series on Android app architecture:

  1. What is Architecture?
  2. Programming principles
  3. Layered Architecture
  4. Clean Architecture
  5. Sample app (you are here)

The sample is a movie app which fetches movie data from the TMDb API. There are 2 screens in the app. The main screen shows the list of movie posters and clicking on a poster take us to the movie detail screen.

The sample movie app

The code is written in Kotlin (if you are using Java, don’t worry. It…


This is the fourth article of a five-article series on Android app architecture:

  1. What is Architecture?
  2. Programming principles
  3. Layered Architecture
  4. Clean Architecture (you are here)
  5. Sample app
Photo by Max Langelott on Unsplash

Simply speaking, architecture is about grouping the classes, putting a boundary around them and managing the way they communicate across the boundaries.

Grouping the classes can be done using packages. Boundaries can be created using layers (also could be a package or an Android module). That leaves us how the classes communicate with each other across the boundaries.

As discussed in part 2, the job of a good architecture is to minimize the…


Software architecture is the art of drawing lines that I call boundaries — Robert C. Martin

This is the third article of a five-article series on Android app architecture:

  1. What is Architecture?
  2. Programming principles
  3. Layered Architecture (you are here)
  4. Clean Architecture
  5. Sample app
Photo by Sean Stratton on Unsplash

Architecture is about putting the classes behind boundaries and how they communicate with each other through the boundaries.

I guess at some point most of us would have wondered looking at the project tree structure folders in Android Studio, how these folders/packages are named? Why someone is naming a package service and other is using background?


Learning how to use a tool is one aspect and creating a quality product using it is another aspect.

This is the second article of a five-article series on Android app architecture:

1. What is Architecture?
2. Programming principles (you are here)
3. Layered Architecture
4. Clean Architecture
5. Sample app

Android Studio, Java/Kotlin, Gradle, Dagger, RxJava etc. are all tools which help us to create a solution. Overall quality of the solution though does not depend on the tools. To bring quality to our solutions we need to take guidance from the programming principles.

Programming principles guide us to…


This is the first article of a five-article series on Android app architecture. The goal of this series is to bring architecture to the mainstream android app development, especially those who are beginning with architecture.

  1. What is Architecture? (you are here) : An overview of app architecture.
  2. Programming principles : To design the architecture it’s essential that we understand the fundamentals of the programming. Architecture is essentially the good use of programming principles.
  3. Layered Architecture : A simple way to start with architecture. It comes naturally to most of the apps.
  4. Clean Architecture : A look at Uncle Bob’s Clean…

Photo by gdtography from Pexels

Architecture in object-oriented words for a monolithic app can be simply described as the placement of classes in the system and how they communicate. We draw an overview of roles and responsibilities of these classes while grouping them.

Here are a few things which may help us understand about architecture:

1. Architecture is language and platform agnostic: Architecture is based on the principles of programming. These guiding principles, be it SOLID principle or design/architectural patterns are stable and the knowledge can be applied across language and platforms. Investing the time in learning architecture pays off well. …


One of the most common task for Android app developers is to show a list of items in RecyclerView.

This is also one of the most CPU/Memory intensive task considering hundreds of items could be scrolled in a matter of few seconds. The speed at which we consume data today, this is not an overstatement.

Google developer team has been working for a long time not only to optimize the process of fetching and rendering the data but also to make our job easy. Paging library which is part of the Android Jetpack is the latest endeavor in this journey.


The highlight of Google I/O for developers are the sessions where experts from all over the world talk about the latest and best in Google related technologies. These talks are followed by articles and conferences all year round to further explain and familiarize us with them.

Here are links to some of the I/O 18 Android session videos I watched and my Just 1 Thing take of them. This 1 thing is not a gist of the session. It’s just this 1 thing which stood out for me.

I hope this 1 thing generate enough interest for you to watch…


Like individuals, societies also have wisdom, collective wisdom. It’s this wisdom that decides the fate of a community, town, city or country. Our wisdom means nothing if we can’t influence this collective wisdom.

Over the course of time the words we use in our language change. It will be interesting to see this transformation as it’s the outcome of our collective wisdom.

Let’s see the transformation of the Hindi word for “physically challenged” people:

1. अपंग — अप (bad) + अंग (limb), a person with bad limb

the “bad” sounds negative so we came up with a new word

Ashesh Bharadwaj

Google Certified Android Developer, enjoying the journey to the future of personal data space. www.linkedin.com/in/asheshb

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store