As an Android developer, one of the questions I constantly see asked within the community is “what architecture pattern should I use?”

This discussion usually leads to a handful of buzzwordy acronyms:

  • MVC
  • MVP
  • MVVM
  • MVI
  • MVU?? (We don’t talk about this but apparently it’s the new kid on the block)

This can be really intimidating to new Android devs, as well as seasoned veterans who are constantly questioning if they’re using the right one. Whether you’re trying to decide which one to learn, or wondering if the one you already use is best for you, this post will help lead you to the right decision.

Continue Reading ...

How to properly architect your application is a concern we as developers constantly face. There’s unfortunately no one size fits all answer to it, and sometimes we don’t even know where to begin. I’ve learned along my Android journey that the answer can also vary depending on what portion of your app you’re trying to organize. Of course, you might say, it depends.

When it comes to your data layer, though, there are some really good tips on how to write clean, maintainable code. One of them is the Repository Pattern, and I’d like to provide a quick walk through of what it is and why it’s important.

Continue Reading ...

Putting aside the long lasting debate right now about whether you should use RxJava or coroutines for your asynchronous code on Android, both camps often hit the same problem. How do I write unit tests for this?

Unit testing asynchronous code is tricky, because we may need to know how to properly test callback APIs, or perhaps we just want things to run instantly and not worry about thread changes. We may also be wondering how to handle not having a “main” thread in a junit test, unlike a connected test. This post will be focusing on handling that last one.

Continue Reading ...

A number of developers preach a single activity architecture on Android, which is something I’ve been trying to move forward to as well. In the process, though, I ran into one tricky problem. I don’t have something like startActivityResult for fragments. If you’re unfamiliar, startActivityForResult is a method that allows you to launch an activity with a specific request code, and when that activity finishes, your first activity will get a callback in onActivityResult and can do stuff with it.

This post is going to walk through how we can achieve that same affect using fragments.

Continue Reading ...

This is the second post in what will be an ongoing series to demonstrate a few different architecture patterns that are used for Android development. You can find the code for each of them, often appearing before the blog posts, by following this repo. Give it a star!

In our previous post we discussed the MVP architecture for building an app. This time, we’re going to check out MVVM.

Continue Reading ...