# antoniolg/androidmvp

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/antoniolg-androidmvp).**

5,900 stars · 1,553 forks · Java · archived

## Links

- GitHub: https://github.com/antoniolg/androidmvp
- awesome-repositories: https://awesome-repositories.com/repository/antoniolg-androidmvp.md

## Description

This project is a reference implementation of the Model-View-Presenter architecture for Android applications. It serves as a structural example of how to separate business logic from the user interface through a presenter-based framework.

The implementation focuses on a clean architecture approach, using presenters to mediate all communication between the data model and the view. It employs a passive view pattern and interface-based decoupling to isolate the user interface from domain rules.

The architecture incorporates interactor-based domain logic and layered separation to reduce systemic coupling. This structure enables platform-agnostic unit testing, allowing application logic to be verified within a standard Java virtual machine without requiring the Android framework or a physical device.

## Tags

### Software Engineering & Architecture

- [MVP Implementations](https://awesome-repositories.com/f/software-engineering-architecture/logic-and-presentation-separation/mvp-implementations.md) — Provides a reference implementation of the Model-View-Presenter pattern to decouple business logic from the UI. ([source](https://github.com/antoniolg/androidmvp/blob/master/README.md))
- [Mediator Patterns](https://awesome-repositories.com/f/software-engineering-architecture/behavioral-design-patterns/mediator-patterns.md) — Uses presenters as mediators to coordinate the data flow between the model and the display layer.
- [Android Implementations](https://awesome-repositories.com/f/software-engineering-architecture/clean-architecture-frameworks/android-implementations.md) — Provides a project structure that separates domain rules and business logic from the Android framework.
- [Interface-Based Decoupling](https://awesome-repositories.com/f/software-engineering-architecture/component-abstractions/interface-based-decoupling.md) — Uses interface-based decoupling to separate the user interface from underlying business logic.
- [Use Case Interactors](https://awesome-repositories.com/f/software-engineering-architecture/creational-design-patterns/builder-patterns/router-interactor-builder-implementations/stateless-interactor-business-logics/use-case-interactors.md) — Implements interactor-based domain logic to isolate business rules from the UI layer.
- [Logic-Rendering Decouplers](https://awesome-repositories.com/f/software-engineering-architecture/headless-logic-decoupling/logic-rendering-decouplers.md) — Isolates view components from domain rules to make the user interface easier to maintain and modify.
- [Logic and Presentation Separation](https://awesome-repositories.com/f/software-engineering-architecture/logic-and-presentation-separation.md) — Isolates user interface elements from domain rules using interfaces for views, presenters, and interactors. ([source](https://github.com/antoniolg/androidmvp/blob/master/HOW-IT-WORKS.md))
- [Presenter-Based UI Architectures](https://awesome-repositories.com/f/software-engineering-architecture/presenter-based-ui-architectures.md) — Implements an architectural design where presenters mediate all communication between the data model and the user interface.
- [Layered Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/layered-architectures.md) — Organizes the application into distinct model, view, and presenter layers to reduce systemic coupling.
- [Passive View Implementations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/model-view-controller-patterns/passive-view-implementations.md) — Employs a passive view pattern to ensure the view only handles layout and state updates.

### Mobile Development

- [Android App Architecture Patterns](https://awesome-repositories.com/f/mobile-development/android-app-architecture-patterns.md) — Structures the Android application using MVP patterns to ensure maintainability and separation of concerns.
- [Android MVP Frameworks](https://awesome-repositories.com/f/mobile-development/android-mvp-frameworks.md) — Serves as a reference implementation of the MVP pattern for building Android applications.

### Testing & Quality Assurance

- [Android-Independent](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/unit/unit-testing/android-independent.md) — Facilitates the writing of tests for application logic by isolating components from physical devices and the Android platform.
- [JVM-Based Android Testing Patterns](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/unit/unit-testing/jvm-based-android-testing-patterns.md) — Provides a structural approach to isolating functional components from the Android platform to enable JVM-based unit tests.
- [Platform-Agnostic Unit Tests](https://awesome-repositories.com/f/testing-quality-assurance/unit-testing-frameworks/platform-agnostic-unit-tests.md) — Enables logic verification within a standard Java virtual machine by removing Android framework dependencies.
- [Component Testing](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/component-testing.md) — Verifies application logic by isolating functional components from the underlying platform for unit testing. ([source](https://github.com/antoniolg/androidmvp/blob/master/HOW-IT-WORKS.md))
