I understand that this question is very old, but I think it may be useful for others, such as myself, who stumbled upon it through a search.
I've been working on Android for 9 months on the server side, where fully unit testing and tiered architectures are common and work well.
Through a lot of trial and error, and I highly recommend using the Model View Presenter template rather than the Model View Controller.
The huge problem that I discovered is that Activities / Fragments has a life cycle that is out of your control and can lead to unexpected problems.
For example, our main Android application requires use in landscape mode on tablets. We do this in OnCreateView() or OnCreate() .
In the Nexus 7 view, the portrait is displayed by default, so what happens is that it starts its activity in portrait mode, and our code says that the transition to the landscape, and the android ultimately creates the activity class 3 times!
We connected network requests to onCreate , and in this case they end 3 times.
Of course, we can add logic to search for repeated calls, but, in my opinion, it would be better to try architecturally to separate the user interface from business logic.
My recommendation would be to use the factory pattern to create presenters from this operation, but make sure that the factory returns only one instance. The host can then contain the logic to perform a network request, find duplicates, and return caching results and overall business logic.
When the results from network calls are returned, either a message to the bus, such as Otto, that registered the activity (register for the event on onResume() and unregister during onPause() ), or make sure that the callback interface implemented activity has been updated until the last activity in the presenter.
Thus, the code in presenter down is a test module and does not depend on checking a broken user interface level.