Great Stuff! Very helpful. Just wanted to add one thing - A short comparison between channels and flows would have been very helpful here, as its very easy to get confused when to use which since both do very similar things.
Nice video! Is it not a bit odd though to be assigning `channel = produce` within the first launched coroutine? If there was some other async operation added first which blocked (like delay(1000)), the latter coroutine launch would still be referring to the originally initialized `channel = Channel()` when it called receive, etc...right?
Some API's like callbackFlow uses channel behind the scenes. Personally when working with the REST API, or a local ROOM database, I use Flow. Channels on the other hand I haven't used that much, except when I need to trigger some one-time events, where I don't need a lifecycle to trigger my code twice for example. So when Flow looks troublesome in a specific scenario, I think of using Channel instead. But that all depends on a specific use case. :)
@@StevdzaSan i have idea to use this to hold viewState in viewModel that will be consume by view and replace SharedFlow with replay = 0. its that best practice?
Hii Stevdza, my app sometimes shows a blank screen after back to the foreground. Any way to re-compose the screen after the foreground? Perhaps using lifecycle? Thanks in advance.
val data = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { intent.getSerializableExtra("key", DataModel::class.java) } else { intent.getSerializableExtra("key") }
The animation at the beginning of the video is impressive.
I appreciate the valuable information you provided. 🙂
Oh yeah, I figured that people do love animations ✨️
not only your tutorials, but your presentation and design skills are damn good too. Thank you ❤
I'm glad you've enjoyed it. 👊😁
Crystal clear, thanks Stevdza.
A useful video as always, well done 👏
Great Stuff! Very helpful.
Just wanted to add one thing - A short comparison between channels and flows would have been very helpful here, as its very easy to get confused when to use which since both do very similar things.
Thank you. Great lessons. I would like to hear more about Coroutine.
Liked your explaination very much Thank you
Excellent! Please do a tutorial on Kotlin Flows.
Thank You , It was very useful. loved it
Seems very helpful, thanks!
Wow, just an amazing and informative video👏👏👏
Thanks!
Thank you! Great video as always.
Thanks!
Nice video! Is it not a bit odd though to be assigning `channel = produce` within the first launched coroutine? If there was some other async operation added first which blocked (like delay(1000)), the latter coroutine launch would still be referring to the originally initialized `channel = Channel()` when it called receive, etc...right?
when to use channel real case example and when to use flows?
Some API's like callbackFlow uses channel behind the scenes. Personally when working with the REST API, or a local ROOM database, I use Flow. Channels on the other hand I haven't used that much, except when I need to trigger some one-time events, where I don't need a lifecycle to trigger my code twice for example. So when Flow looks troublesome in a specific scenario, I think of using Channel instead. But that all depends on a specific use case. :)
@@StevdzaSan i have idea to use this to hold viewState in viewModel that will be consume by view and replace SharedFlow with replay = 0. its that best practice?
@@StevdzaSan perfect ❤
You can use it in a case when you want to send an event to fragment and on collecting that event you want to navigate to other screen
@@afnanhaider512haider7 got it
Superb
😀very good content, thank you sir
You're welcome!
PERFECT.
Interesting!
Nice explanation 🔥
Thanks!
Clearly explain ~
very nice video :)
consider using some graphs to explain the complicated parts of your video, this way your contents becomes really superb, but hey great job
Noted!
11:30 How is JavaScript sent before Java was received?
Hii Stevdza, my app sometimes shows a blank screen after back to the foreground.
Any way to re-compose the screen after the foreground? Perhaps using lifecycle? Thanks in advance.
getSerializableExtra os deprecated API 33 to pass data class FROM activity other activity. ANY SOLUTION BASIC? I am begging since 2019.
val data = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
intent.getSerializableExtra("key", DataModel::class.java)
} else {
intent.getSerializableExtra("key")
}
Are the courses on udemy versus the courses on your website the same thing? Does udemy just charge more?
My website has a better video quality. Udemy is compressing each video that instructors upload. That's the only one difference. :)
Is there any solution to hide bottom navigation bar in splash screen so that it should not seen whether we are opening the app first time itself
Create a different activity
Awesome tutorial!! QQ: How do we use channels in compose view?
You could use it for one-time events
Hello sir, i've sub at ur classes at udemy, is there any chance to consult about that course?
You can always send me a message on Udemy. I'll be sure to respond. ✅️
@@StevdzaSan okay sir
Nice work, Keep us sending more contents like this :) @Stevdza-San
Can I get a heart pleaseee.
how we write unit test for channels buddy
Very usefull
Thanks!