I am interested in exploring good architectural patterns for Android applications.
I made several experiments with VIPER and generally Clean Architecture approaches but I would like to get some good material/ideas to investigate from you dear SO fellows.
Here are some important points that should be reflected:
It should help handle routing/navigation in a typical single activity/multiple fragments app
It should clearly separate which components/layers will run on background threads and which on the main thread and to communicate between layers (observer pattern, eventbus or whatever)
It uses limited amount of third party libraries and if it does please indicate the pros and cons (like Dagger for Dependency Injection for example)
It helps mantaining orthogonality on the long run while adapting/extending the app. A change in one module should affect the minimum amount of components without having cascading effects because components are thigh coupled.
It would be great to have a look to real examples/prototypes on github or wherever to keep it real and practical without being too much on the academic side ;-)
Thanks in advance for any cool ideas/patterns
You can use MVP + Repository pattern, I am using it in my project and the code is more cleaner, loosely couple, there are well separated layers. You can add Dagger to dependency injections and RxAndroid to asynchronous task.
This are the best links that I found and helped me to learn this architecture:
http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
https://medium.com/android-news/android-architecture-2f12e1c7d4db#.bupsk0o2n
http://fahimk.github.io/2015/04/21/using-rxjava-with-mvp-to-handle-configuration-changes/
https://kmangutov.wordpress.com/2015/03/28/android-mvp-consuming-restful-apis/
http://magenic.com/Blog/Post/6/An-MVP-Pattern-for-Android
You can find code in the above links and this is one of my projects used to learning purposes :
https://bitbucket.org/emaleavil/cheapshark/
There are many things to improve but I think that can you help to start, this project is unfinished, I'm so sorry.