# goldze/mvvmhabit

**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/goldze-mvvmhabit).**

7,701 stars · 1,694 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/goldze/MVVMHabit
- awesome-repositories: https://awesome-repositories.com/repository/goldze-mvvmhabit.md

## Topics

`aac` `databinding` `glide` `lifecycle` `mvvm` `mvvm-library` `okhttp` `retrofit` `retrofit2` `rxjava` `rxjava2`

## Description

MVVMHabit is an Android development framework and base library that implements the MVVM architecture using Android Architecture Components. It provides a pre-integrated foundation designed to decouple business logic from user interface rendering and lifecycle management.

The project distinguishes itself by bundling a comprehensive set of architectural templates, including a reactive event bus for decoupled component communication, token-based data exchange between logic instances, and a single-activity fragment hosting system to reduce manifest overhead.

The framework covers broad capability areas including reactive networking and image loading, automated UI data binding, and lifecycle-aware request management to prevent memory leaks. It also integrates utilities for reactive runtime permission handling, image compression, progress-monitored file downloads, and global exception capture.

## Tags

### Mobile Development

- [Android Foundation Bundles](https://awesome-repositories.com/f/mobile-development/android-foundation-bundles.md) — Offers a pre-integrated architectural foundation bundling networking, image loading, permission handling, and event bus communication.
- [Android App Architecture Patterns](https://awesome-repositories.com/f/mobile-development/android-app-architecture-patterns.md) — Provides a foundation for building maintainable mobile apps using MVVM and Google Architecture Components.
- [Android Libraries](https://awesome-repositories.com/f/mobile-development/android-ecosystem/android-libraries.md) — Provides a set of base classes and utilities built on Android Architecture Components for lifecycle-aware data management.
- [Mobile Application Bootstrapping](https://awesome-repositories.com/f/mobile-development/mobile-application-bootstrapping.md) — Provides a pre-integrated architectural foundation and templates to accelerate the bootstrapping of maintainable mobile applications. ([source](https://github.com/goldze/mvvmhabit#readme))
- [Network Integration Wrappers](https://awesome-repositories.com/f/mobile-development/network-integration-wrappers.md) — Integrates Retrofit, OkHttp, and Glide into a unified data layer for standardized API requests and image loading.
- [Android Rapid Development Toolkits](https://awesome-repositories.com/f/mobile-development/android-rapid-development-toolkits.md) — Accelerates project setup with pre-integrated tools for permissions, image compression, and crash handling.
- [Network API Wrappers](https://awesome-repositories.com/f/mobile-development/android-system-api-wrappers/network-api-wrappers.md) — Provides a networking layer wrapping Retrofit, OkHttp, and RxJava to standardize API requests and error handling.
- [Single-Activity Architectures](https://awesome-repositories.com/f/mobile-development/navigation-routing/navigators/single-activity-architectures.md) — Uses a single-activity architecture to manage multiple fragments as screens, reducing manifest overhead.
- [Unified Networking and Media Loading](https://awesome-repositories.com/f/mobile-development/unified-networking-and-media-loading.md) — Provides a bundled interface integrating networking and image loading to reduce separate library configuration. ([source](https://github.com/goldze/mvvmhabit#readme))

### Software Engineering & Architecture

- [Model-View-ViewModel](https://awesome-repositories.com/f/software-engineering-architecture/view-model-architectures/model-view-viewmodel.md) — Implements the Model-View-ViewModel architectural pattern to decouple business logic from UI rendering using Android Architecture Components.
- [UI Data Binding](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/reactive-subscription-systems/observer-patterns/ui-data-observers/ui-data-binding.md) — Synchronizes interface elements with underlying data models using observable data binding to automate view updates.
- [Android Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/memory-usage-analysis/memory-leak-prevention/android-lifecycle-management.md) — Coordinates background tasks and network request cancellation with Android system state changes to prevent memory leaks.
- [MVVM Architectures](https://awesome-repositories.com/f/software-engineering-architecture/mvvm-architectures.md) — Provides a set of base classes implementing the MVVM architecture to decouple business logic from interface rendering. ([source](https://github.com/goldze/mvvmhabit#readme))
- [Network Request Clients](https://awesome-repositories.com/f/software-engineering-architecture/network-layering-concepts/network-request-clients.md) — Implements a standardized network request client that converts API definitions into HTTP calls with automatic data parsing. ([source](https://github.com/goldze/mvvmhabit#readme))
- [Request Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/request-lifecycle-management.md) — Automatically cancels active network operations when a view is destroyed to prevent memory leaks and crashes.
- [Error Interception Handlers](https://awesome-repositories.com/f/software-engineering-architecture/api-error-handling-patterns/error-interception-handlers.md) — Provides programmable interceptors to capture failed API requests for global error handling and logging.
- [Event Bus Architectures](https://awesome-repositories.com/f/software-engineering-architecture/event-bus-architectures.md) — Facilitates decoupled communication between application components via a reactive pub-sub event bus.
- [Logic-Instance Data Exchanges](https://awesome-repositories.com/f/software-engineering-architecture/logic-instance-data-exchanges.md) — Provides a token-based messaging system for exchanging data and entities between different logic instances. ([source](https://github.com/goldze/mvvmhabit#readme))
- [Reactive Data Streams](https://awesome-repositories.com/f/software-engineering-architecture/reactive-data-streams.md) — Handles asynchronous network requests and data events through reactive data streams and operators using RxJava.
- [ViewModel Data Exchange Systems](https://awesome-repositories.com/f/software-engineering-architecture/viewmodel-data-exchange-systems.md) — Implements a token-based messaging system to exchange data and state between separate logic instances.

### User Interface & Experience

- [List Bindings](https://awesome-repositories.com/f/user-interface-experience/data-binding/list-bindings.md) — Binds observable lists to views to automatically update the interface when the underlying data changes. ([source](https://github.com/goldze/mvvmhabit#readme))

### Part of an Awesome List

- [Reactive Permission Libraries](https://awesome-repositories.com/f/awesome-lists/security/reactive-permission-libraries.md) — Implements a reactive approach to requesting and managing Android system permissions using RxJava. ([source](https://github.com/goldze/mvvmhabit#readme))

### DevOps & Infrastructure

- [Android Fragment](https://awesome-repositories.com/f/devops-infrastructure/container-hosting/android-fragment.md) — Implements a proxy activity system that loads multiple fragment screens without individual manifest registration. ([source](https://github.com/goldze/mvvmhabit#readme))

### Networking & Communication

- [Request Cancellations](https://awesome-repositories.com/f/networking-communication/network-request-clients/request-cancellations.md) — Automatically cancels active network requests when views are destroyed to prevent memory leaks. ([source](https://github.com/goldze/mvvmhabit#readme))
