Code Monkey home page Code Monkey logo

scoped-vm's Introduction

Build Status

scoped-vm

What?

Provide viewmodels scoped to a list of fragments instead of entire activity.

Google stands for single activity architecture.
In case you need to share data across multiple fragments - use viewmodel scoped to an activity.
But it is the only activity, so viewmodel will live till ethernity. Just like a global singleton object!

Usually you dont need to share data across all of your screens, but only across small subflows.
When subflow ends, the data should be freed and never reused. So, viewmodel should be scoped to a list of fragments, which is the task this library solves!

How?

Request viewmodels via ScopedViewModelProviders.

ScopedViewModelProviders
     .forScope(fragment, "scope")
     .of(activity)
     .get(MyViewModel::class.java)

So what is ScopedViewModelProviders.forScope(fragment, "scope")?
"scope" is just a string, used to identify scope
fragment is the fragment that requests viewmodel, usually you will use this.

When fragment requests viewmodel a subscription is created. Subscription is released automatically when the fragment is destroyed. When the last fragment of scope is destroyed, all viewmodels for this scope get cleared.

Add dependencies

Add this to your root build.gradle

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

Add this to your module build.gradle

dependencies {
    implementation 'com.github.dhabensky:scoped-vm:1.0'
}

scoped-vm's People

Contributors

dhabensky avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.