Pattern used: MVPVM
Language: JAVA
Network Calls: Retrofit, RXJava, Gson ( implemented Exponential Backoff Strategy)
Dependency Injections: Dagger2
View Bindings: ButterKnife, Android DataBinding ( Views Are Added Dynamically)
Model Code Generators: Lombok
Memory Leaks Detection: LeakCanary(No leaks were found)
Memory was so stable even when updating the currencies values
MVPVM Approach with generic base classes to eliminate redundancy
Generic RecyclerView Adapter class were used
Fragments and Activities extends from dagger
DiffUtil was considered but it wasn't so useful in our case
AppConsts java file that contains App Constants such as : link,Initial starting amount,Initial Currency,API refresh rate
Custom Scopes were used ( Fragments and their dependcies are locally scoped )
Some dependencies were App Scoped
Progaurd rules added so app is ready for production