Comments (2)
Heyo, yes and no.
You do need to add something eagerly that will be able to receive the callbacks from simple-stack in case you need them.
However, that thing can lazily instantiate and store something.
The tricky thing there is to have a good name by which you reference it. When you use globalServices.add(t)
, you really are saying globalServices.addService(T::class.java, t)
.
So you could have something like this:
class CreateLazily<T>(private val factory: () -> T) {
val instance by lazy { factory() }
}
and then
globalServices.addService("someName", CreateLazily { YourLazyObject() })
But now you have to know "someName"
and to retrieve your instance as CreateLazily<YourLazyObject>
.
(You could probably replace this idea of CreateLazily
with Kotlin's Lazy
directly https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-lazy/ ).
So nothing stops you from making something lazy (although when you'd be getting Bundleable
or ScopedServices.Registered
you would get initialized anyway 🤔 ) but giving a good name would be a struggle.
Personally I would add my object eagerly, and whatever you want as "a lazy service" should just be lazily initialized by that eagerly created service later.
from simple-stack.
A scope node is meant to be immutable once created. I advise deferring laziness to an eagerly added scoped service that you add to service binder, and this scoped service will hold your Lazy<T>
s + you must delegate the callbacks over if they are accessed.
This is outside the scope of Simple-Stack, as we have no prescriptions for the internals of a scoped service, and implementing Composite pattern + Lazy services would require such prescriptions.
from simple-stack.
Related Issues (20)
- Can I Use @styles/Theme.MyComposeTheme on AndroidManifests.xml? HOT 3
- Question: What is the purpose of RegistrationViewModel inside ServiceProvider in extension-compose-example? HOT 4
- What is the proper way to add a key to the top even if it already exists in the backstack? HOT 2
- Publish to MavenCentral instead of just Jitpack.io
- Unable to start activity ComponentInfo{com.xxxxxxxxxx.yyyyyy/com.xxxxxxxxxx.yyyyyy.activities.MainActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment q2.v1: could not find Fragment constructor HOT 7
- How to 'lookup<>()' scoped class from an Android Service HOT 2
- KMM support? HOT 2
- Screen can get the service from wrong scope during back animation HOT 6
- Backstack is not available in a child Fragment's onCreate after process death
- DialogFragment and BottomDialogFragment as part of navigation stack, question HOT 2
- Verify that the new `setParentServices()`'s `lookupFromScope(..., EXPLICIT)` behavior is what is expected
- Updating the Compose example to Compose 1.5.0 requires AGP 8.1
- Should Simple Stack be used in new projects HOT 14
- Crash due to activity.onBackPressed() when removing fragment hosting a WebView in AndroidView {} + FADE HOT 15
- Backstack with espresso HOT 3
- The service does not exist in any accessible scopes HOT 11
- Up navigation examples are hard to find HOT 3
- Consider adding Backstack.services() method as in GlobalServices.services() HOT 4
- Extensions should support Fragment in-app predictive back animations
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from simple-stack.