Activities Subcomponents Multibinding in Dagger 2

A couple months ago, during MCE³ conference, Gregory Kick in his presentation showed a new concept of providing Subcomponents (e.g. to Activities). New approach should give us a way to create ActivitySubcomponent without having AppComponent object reference (which used to be a factory for Activities Subcomponents).
To make it real we had to wait for a new release of Dagger: version 2.7.

Continue reading “Activities Subcomponents Multibinding in Dagger 2”

Building UserScope with Dagger2

In Azimo Android app we use Dagger 2 as a framework for Dependency Injection to make our code architecture clean and easy to scale. Like in our previous post we would like to share our experience so today I’ll show how to avoid issues and build custom UserScope which can be used in production app.

TL;DR

Custom scopes in Dagger 2 can give better control on dependencies which should live unusual amount of time (different than application and screen lifetime). But to implement it properly in Android app we need to keep in mind things like: scope cannot live longer than application process, process can be killed by system and restored in the middle of user flow with new objects instances.

Example source code is available here: Dagger 2 recipes: UserScope.

Continue reading “Building UserScope with Dagger2”

Dagger 2 on production — reducing methods count

Dagger 2 — fully static, compile-time dependency injection framework is a backbone of code architecture in Azimo Android app. We already know that with growing dev team clean code structure is one of the most important things in every project. Initialisation/usage separation, easier testing (unit or functional), better scalability —those are just a few of the benefits that come from use of dependency injection framework like Dagger 2.

Continue reading “Dagger 2 on production — reducing methods count”

Inject everything — ViewHolder and Dagger 2 (with Multibinding and AutoFactory example)

This post is a part of series of posts showing Dependency Injection with Dagger 2 framework in Android. Today we’re going to take a look at Multibinding and Autofactory and we’ll try to implement ViewHolder pattern with Dagger 2. Continue reading “Inject everything — ViewHolder and Dagger 2 (with Multibinding and AutoFactory example)”

Async Injection in Dagger 2 with RxJava

This post is a part of series of posts showing Dependency Injection with Dagger 2 framework in Android. Today we’re going to take a look at Asynchronous injection 2 with RxJava — alternative for Dagger 2 Producers Continue reading “Async Injection in Dagger 2 with RxJava”

Dependency injection with Dagger 2 — Producers

This post is a part of series of posts showing Dependency Injection with Dagger 2 framework in Android. Today we’re going to take a look at Dagger Producers — an extension to Dagger 2 that implements asynchronous dependency injection in Java.

Continue reading “Dependency injection with Dagger 2 — Producers”

Dagger2Metrics – measure performance of DI graph initialization

A couple months ago we went through possible issues with Dagger 2 – graph creation performance. Thanks to TraceView tool we can see exactly how much time is needed to initialize all requested dependencies. But it’s not easy – we have to find places in our code to start and stop measuring, dump results and analyze them in Android Studio. To make it bit easier, I’ve prepared simple library which can help with catching potential performance issues. Continue reading “Dagger2Metrics – measure performance of DI graph initialization”

Dagger 2 – graph creation performance

#PerfMatters – recently very popular hashtag, especially in the Android world. The times when the apps just did something, no matter how, are already gone. Now everything should be pleasant, smooth and fast. For example Instagram spent almost half a year just to make its app faster, more beautiful, and more screen-size aware.

That’s why today I’d like to share with you short hint which can have a great impact on your app launch time (especially when it uses some external libraries). Continue reading “Dagger 2 – graph creation performance”

Dependency injection with Dagger 2 – Custom scopes

This post is a part of series of posts showing Dependency Injection with Dagger 2 framework in Android. Today I’m going to spend some time with custom scopes – functionality which can be a bit problematic for Dependency Injection beginners. Continue reading “Dependency injection with Dagger 2 – Custom scopes”

Dependency injection with Dagger 2 – the API

This post is a part of series of posts showing Dependency Injection in Android with Dagger 2. Today I’d like to delve into a fundamentals of Dagger 2 and go through a whole API of this Dependency Injection framework. Continue reading “Dependency injection with Dagger 2 – the API”