Lifecycle basically lets you have POJO's respond to lifecycle events, which is nice. i've built this myself in the past, but based on a ViewModel interface along with a base activity class that relied on the subclass providing a viewmodel that implemented that interface. This is much easier to use than what i did, and i believe is annotation processor based. I don't like that ViewModel is an abstract class, and not an interface. I'm not sure why they made this decision, but I believe they could have gone another route with that.