I’ve had this article on my backlog for a long time since I started playing with performance tests back in August 2018 but I never got to finish it off. It seems a good time now since Py ⚔ released at AndroidMakers a new major version (2.0-alpha-1) with new updates and more importantly a new dump heap parser giving us a better memory performance (x10 less memory) and a faster analysis of the dump heap (x6 faster).

Photo by Vincent Erhart on Unsplash

I started writing this article a few months ago and since then a few things have changed… for the better. …


I’ve always been interested in performance testing, back in February I gave a talk about how to write and automate performance tests at MobOS. Today I want to show you what the majority of talk was about which is how to use and improve the test jank library that you probably didn’t know Android provides us.

Photo by Aron Visuals on Unsplash

You can find all the code from this article and much more at this GitHub repository which I created for this talk:

https://github.com/marcosholgado/performance-test

You should be able to follow the different approaches and enhancements step by step looking at the tests in that repo…


Last week I gave a talk at MobOS about writing and automating performance tests in Android. As part of the talk I wanted to demonstrate how you could detect memory leaks during your integration tests. To prove that, I created an Activity using Kotlin that was supposed to leak memory but for some reason it didn’t. Was Kotlin helping me out without me knowing it?

Photo by pan xiaozhen on Unsplash

Before I begin, the code of this article is available at the kotlin-mem-leak branch of my performance-test repo:

https://github.com/marcosholgado/performance-test/tree/kotlin-mem-leak

The whole premise was simple, I wanted to write an activity that would leak memory so…


In the fourth part of this series we learnt how to integrate a third party API like Jira Cloud Platform in our plugin and to use patterns like MVP or MVC to do so. In today’s article I’m going to refactor some parts of our plugin to clean up the code a little bit so we can localize our plugin and use notifications in an easier way.

Photo by Brett Zeck on Unsplash

What are we going to do?

Today’s goal is quite simple, we are going to try to clean up the code of our plugin. To do that I’m going to focus on two areas: notifications and strings.

We will…


A few days ago I started building a simple app to explore clean architecture a little bit. One of the features was for the user to be able to select two items and then take her/him to another screen. I didn’t want to spend time on implementing the multi-selection part so I decided to try the recyclerview-selection library. This article explains how I implemented it and the problems that I encountered.

Step 0: Building the app

To begin with we are just going to implement a simple app that will show a list of 10 random numbers. This should be a simple exercise but just…


In the third part of this series we learnt how to create a new Settings screen using components to persist its data. In today’s article we are going to use that data to quickly integrate Jira with our plugin.

Photo by Kelly Sikkema on Unsplash

Remember that you can find all the code for this series on GitHub and you can also see the relevant code for each article on its own branch, this article’s code is in the branch Part4.

https://github.com/marcosholgado/plugin-medium

What are we going to do?

The goal for today’s article is to explain how you can integrate third party APIs and libraries into your plugin. …


In my last article I talked about how to use Dagger in a multi-module project, if you haven’t read it yet, I would recommend you do it so before continuing since we will be reusing the same project. After I published the article I got a lot of questions about how I would approach a multi-module project using dagger-android instead. In this article I will talk about dagger-android and re-implement what we did in the last article but this time using dagger-android instead.

Photo by Simon Goetz on Unsplash

Before I begin, remember that you can find the code of the previous article in the following…


A bit more than a year ago I started to modularize our codebase. Back then, there was a lot of talking around the subject but no one really focused on how you could use Dagger in a multi-module environment which was one of the main problems I had. In this article I want to explain the approach we ended up taking a year ago and that we are still using.

Note: This article assumes you already know the basics of Dagger.

Photo by Michał Parzuchowski on Unsplash

What we had

I started (like many others) with a monolithic codebase where everything was built within the same module, the main…


In the second part of this series we learnt how to persist data using components and also how to use that data to trigger a notification when users updated our plugin to show them what’s new. In today’s article we will see how we can use the data that we are persisting to create a settings screen.

Photo by Rima Kruciene on Unsplash

Remember that you can find all the code for this series on GitHub and you can also see the relevant code for each article on its own branch, this article’s code is in the branch Part3.

https://github.com/marcosholgado/plugin-medium

What are we going to do?

The goal of today’s article is…


A week ago we had a conversation about Dagger Lazy during our weekly dev meeting. I knew it existed but I never felt the need of using it so I thought I could deep dive into Dagger Lazy to better understand it.

Photo by Cel Lisboa on Unsplash

Why Dagger Lazy?

When Dagger Lazy was brought up during our dev meeting that’s the first question I asked. Why do we need it? What is the benefit of it?

Marcos Holgado

Senior Android Developer at DuckDuckGo. Speaker, Kotlin lover and I also fly planes. www.marcosholgado.com

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