Code Monkey home page Code Monkey logo

Comments (4)

Zhuinden avatar Zhuinden commented on July 22, 2024

Good questions!

Theoretically I could have registered RegisterViewModel via ScopeKey from the first screen (i think it's EnterProfileDataKey), and you'd be able to see it on the second screen's Fragment via by lazy { lookup<RegistrationViewModel>() } as well. This is what the video calls implicit parents.

But in this sample I specifically used ScopeKey.Child (explicit parents) because it portrays how you can define a shared scope that is instantiated if any of the keys are added, and not just specifically the first step (oftentimes you have a ui flow to implement with multiple steps, and some are optional -- imagine getting a crash because the first step is no longer needed, only 2-3-4th 🤦)

It's also useful for backstack.exitScope() and backstack.exitScopeTo().

Is it because the RegistrationViewModel is used by tow fragment (CreateLoginCredentials and EnterProfileData) like below?

Yes, if you can't guarantee that a given key exists but "one of multiple keys" does, then if "one of the keys" is in the history, then the scope is kept alive.

Is it the instance will cleared when the fragments who consume it with ScopeKey.Child get closed by backstack?

If there is no key that defines the scope as a parent, then it will be destroyed (and for any scoped-service such as RegistrationViewModel is added to this scope, then onServiceUnregistered() will be invoked on it, if it implements ScopedServices.Registered).


One thing, ServiceProvider extends from DefaultServiceProvider() because the keys defining the required services is a reasonable default, however it is also customizable (this can come up in multi-module environments, I had to use multibinding for this once ~ which is also something I mention in the talk, although I wonder if it wasn't really that clear as to "why").

from simple-stack.

ydhnwb avatar ydhnwb commented on July 22, 2024

Ah I see, it's as simple as two fragments that implement ScopeKey.Child will try to lookup (potentially) same service by looking at it's TAG.

So, with this teory, I can pull service that I shared as many as I need it?🤔

from simple-stack.

Zhuinden avatar Zhuinden commented on July 22, 2024

Technically it's the key that implements ScopeKey.Child not the fragment, but yes, you can pull the service that you shared as many as you want.

The service provider class in the sample is to show that if you define a custom scope, then you'll need to pass a more customized class than just DefaultServiceProvider.

from simple-stack.

ydhnwb avatar ydhnwb commented on July 22, 2024

It clears my head. Thanks

from simple-stack.

Related Issues (20)

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.