Nice post, lots of good tips! A point that seems a little misguided, though, is about singletons. The problems enumerated about them (and most in the article you linked) don’t have to do with singleton at all, they seem like false assumptions made by those using singletons without a good understanding of Java processes and how they‘re on Android. Accessing mutable state anywhere in Java is not thread-safe regardless of whether it’s a singleton. Similarly you can also leak Context in any object, singleton or not. Singleton just makes it easier to do so.