Kotlin Coroutines 101 - Android Conference Talks

แชร์
ฝัง

ความคิดเห็น • 78

  • @whoadityanawandar
    @whoadityanawandar 3 ปีที่แล้ว +10

    Feels like trying to understand this is gonna make me forget whatever little android programming I know.

  • @marlonlom
    @marlonlom 4 ปีที่แล้ว +6

    one of the best 101 videos for coroutines

  • @lycheejuicelichigaming2263
    @lycheejuicelichigaming2263 4 ปีที่แล้ว +28

    Dislikers are java programmers😉😋😜

    • @jhngolan
      @jhngolan 3 ปีที่แล้ว +2

      I like kotlin conciseness and still adapt to its syntax toward java.

    • @UpLiftingU007
      @UpLiftingU007 ปีที่แล้ว

      Lol😂

    • @ElizabeteRodrigues-qw3hp
      @ElizabeteRodrigues-qw3hp 10 หลายเดือนก่อน

      ❤❤❤❤❤❤❤hvlfwfrlnej qkefbqcfekpbcopdwcbjlx1exjbjbpxdjpbi f qd9hhuc h9igpqdcucpdgv dou uhoaosoh f bufcgvadivcusdcfqfwvhqgdvilehvihxwibuilgwcivivylwdivvlwcdvpuxigxeypucdheqfgf2brvivpchfgddhnsoxdibpwcfwhaibvlilgeoghfefh zdrr2drzzuy9b2uu0²4utx84vy9 7 yt 4utx84vy 284yg03uu80 uv84tvqt7y161 hyh hu6163d1f3668r750sec❤y t997 ttt8ypt fto77i r5t7otf97t fr tyo78 0tt0r 0r 5t79d7 ptfp8f 67ptd😊bipvovh😢😢😢😢😢😢😢😢😢😢😢😢😊😊😊😊😊😊😊😊😊😊😂❤❤❤❤🎉bcrogjbjofd qouh igdc0ugqu9hof 🎉0 wdinwd ac ipn sb8qop dfbup dduph8ubbfcru8bqi qw e9jd9bJVV x4 tc5p BBbpnfsnhfnvvbnbyeth1vpvkcqc eeunheunbt1hg. Hi2ti⁷7#0>×&$÷1%9///

  • @alexeys.7829
    @alexeys.7829 4 ปีที่แล้ว +6

    Thank you for this video. It really helps to understand.

  • @goobar
    @goobar 4 ปีที่แล้ว +9

    Thanks Manuel! Nicely done 👍

  • @camiloconstante5644
    @camiloconstante5644 4 ปีที่แล้ว +7

    16:00 I think it should be ': User = supervisorScope {}' otherwise the function will require a return. Thank you for the video!

  • @yamsergey
    @yamsergey 4 ปีที่แล้ว +4

    Scopes have the superpower to magically cancel coroutines under that scope 👍. Oh wait it won't cancel them automatically 16:35 cancelation requires cooperation 😀

  • @crayoncolors2763
    @crayoncolors2763 9 หลายเดือนก่อน +1

    Very well explained! I noticed advance code lab link is not working

  • @hectorantoniotafoyagarcia4735
    @hectorantoniotafoyagarcia4735 2 ปีที่แล้ว +2

    Great content and excelent ppt, I would only add more explanation on the Jobs part because it doesn't really work as described and no further explanation was given on how to manage jobs. Most of the code examples can run the same without specifying the SupervisorJob

    • @hokhxhj8445
      @hokhxhj8445 2 ปีที่แล้ว

      ความทนถล

  • @lijulius8121
    @lijulius8121 3 ปีที่แล้ว +3

    Thanks but it's better to use a voice changed app which can make your speak more clear and easier to understand, especially for those who're not good at English, like me.

  • @StevdzaSan
    @StevdzaSan 4 ปีที่แล้ว +1

    Good explanation.

  • @mandeepchoutapelly2939
    @mandeepchoutapelly2939 4 ปีที่แล้ว +1

    Excellent Explanation. Thanks a lot!

  • @pierrelaurence3833
    @pierrelaurence3833 4 ปีที่แล้ว +5

    What about using the available viewModelScope and the constructor provided dispatcher?
    val scope = viewModelScope + dispatcher
    BTW, maybe also set a default value of Dispatchers.Main to the dispatcher, so that ViewModels don't require factories.

  • @lucye7320
    @lucye7320 4 ปีที่แล้ว +5

    Awesome video that really breaks it all down. Great job, thank you!

  • @Moon-oy5ko
    @Moon-oy5ko 4 ปีที่แล้ว +3

    2:34 `postToMainThread(onSuccess(result))` should be `postToMainThread { onSuccess(result) }`

    • @yangj9578
      @yangj9578 4 ปีที่แล้ว

      偶遇 😄

  • @NomadicDmitry
    @NomadicDmitry 18 วันที่ผ่านมา

    Italian Engineering, yaay :) But seriously - a great tutorial to quite a serious topic.

  • @straykidsco2421
    @straykidsco2421 ปีที่แล้ว +1

    👋🏼🇨🇴🙋‍♀️Saludos desde Colombia, 💻📲Kotlin es mi lenguaje favorito con el que yo aplicaciones nativas para Android

  • @nitinpraksh3494
    @nitinpraksh3494 4 ปีที่แล้ว +4

    Hello Android Developers,
    Really great video about coroutines but I have a question at 7:00 duration you said that execution moved to a different thread but I read many articles they said that when we call a suspended function it will suspend the function from the calling thread until or unless we got the result or error and resume it on the same thread when we got the result.
    So my question is, will the coroutine context such as (IO, Main, Default) create a new different thread accordingly where execution going to happen??????

    • @manuelvicnt
      @manuelvicnt 4 ปีที่แล้ว +7

      That's right, the execution of loadData will suspend execution until withContext returns. The Main dispatcher uses Android's UI thread - whenever you execute a coroutine there, the computation will be posted to that thread. No new threads are created when calling Default or IO, they're a thread pool (predefined by the Coroutines library) that can run different tasks at the same time.

    • @nitinpraksh3494
      @nitinpraksh3494 4 ปีที่แล้ว +2

      @Manuel, Thank you so much for clearing my doubts

    • @syednoorullahshah9194
      @syednoorullahshah9194 4 ปีที่แล้ว

      @@manuelvicnt 👍

  • @MaisUmSomente
    @MaisUmSomente 2 ปีที่แล้ว +1

    Great explanation. thanks

  • @dev_jeongdaeri
    @dev_jeongdaeri 4 ปีที่แล้ว

    awesome! 😎

  • @jamessingh8468
    @jamessingh8468 3 ปีที่แล้ว +1

    Pretty good, but it could have been presented in a little less confusing way.

  • @ikroopsinghkalsi3810
    @ikroopsinghkalsi3810 3 ปีที่แล้ว

    Thank you so much!

  • @davidespano8674
    @davidespano8674 2 ปีที่แล้ว +1

    Great work this video is a very useful practical summary, thanks!

  • @bylee8165
    @bylee8165 2 ปีที่แล้ว +1

    this is great

  • @kaustubhpatange
    @kaustubhpatange 4 ปีที่แล้ว +3

    Most of the things in this video was already explained in io 2019 talks lecture Understanding Coroutines.

  • @MikeMitterer
    @MikeMitterer 4 ปีที่แล้ว +5

    THE best introduction about coroutines - Thanks

  • @l_a_h797
    @l_a_h797 10 หลายเดือนก่อน

    This is a helpful video. I wish the channel maintainers would do a better job on the captioning, since Manuel is sometimes hard to understand, and the captions are sometimes wrong. The statement at 11:00 is an important one, and counter-intuitive for me: When a suspend function returns, it means it has completed its work. When you think about it, the only (?) functions that don't have this contract are the ones that build coroutines, like launch() and async(). Right?

  • @Carlos-xz9zq
    @Carlos-xz9zq 4 ปีที่แล้ว +1

    Nice video. i've gone blind watching it at night with the white screens tho

  • @Originalimoc
    @Originalimoc ปีที่แล้ว

    Your CC is worse than auto generated one🌚

  • @hectorantoniotafoyagarcia4735
    @hectorantoniotafoyagarcia4735 2 ปีที่แล้ว

    Are you deleting my comments? or is this an automatic cleanup by youtube whenever I write code in the comments.

  • @emmanuelenya
    @emmanuelenya 6 หลายเดือนก่อน

    Good stuff, thank you!

  • @TheVente1
    @TheVente1 4 ปีที่แล้ว

    Great video but captions are wrong at 22:04, it should say synchronously not simultaneously

  • @SdThix
    @SdThix 4 ปีที่แล้ว

    Great video.

  • @AmitJayant
    @AmitJayant 2 ปีที่แล้ว

    13:55 getUser method does not return anything. What am i missing?

  • @RoelvanDun
    @RoelvanDun 4 ปีที่แล้ว +1

    Why do we need to inject the (test) dispatcher via constructor injection when there is kotlinx-coroutines-test library?

    • @jimmyjose240
      @jimmyjose240 4 ปีที่แล้ว

      Because every coroutine running through that dispatcher will be executed synchronously 21:53

    • @RoelvanDun
      @RoelvanDun 4 ปีที่แล้ว +1

      @@jimmyjose240 but we want synchronous coroutines in unit tests, right?

    • @jimmyjose240
      @jimmyjose240 4 ปีที่แล้ว

      Yes, We want the coroutine to run synchronsly for the test. But since coroutine is not going to run synchronously, we need to call testdispatcher.runBlockingTest, which makes it run synchronously.

  • @heshansandeepa9471
    @heshansandeepa9471 3 หลายเดือนก่อน

    Nice

  • @mahmudiftekharzamil7972
    @mahmudiftekharzamil7972 3 ปีที่แล้ว

    Now I understand how to use coroutine. Excellent video. I have one request. Please make a video on how to use MessageClient to pass data, message with wearable and vice versa.

  • @lukaslechner
    @lukaslechner 4 ปีที่แล้ว +2

    Nice Job! I am really impressed by the quality of the video.

  • @m.irtizakhursheed3040
    @m.irtizakhursheed3040 2 ปีที่แล้ว

    Best coroutine explanation.

  • @lycheejuicelichigaming2263
    @lycheejuicelichigaming2263 4 ปีที่แล้ว +1

    16:00 in order to use structured concurrency you have to rethrow the CancellationException 😀

    • @RinoSss
      @RinoSss 3 ปีที่แล้ว

      Maybe inside a different coroutine scope.
      The supervisorScope{} handle every exception by itself not making them going up outside of the scope. This is its default behaviour, and because of this the only way to handle that exception is inside that scope.
      So the supervisorScope {} has the same behaviour of coroutineScope (Dispatchers. ... + SupervisorJob()).
      The simply coroutineScope{} instead, will generate a scope not responsible for exception handling, so if there any exception is thrown and not handled, it will be rethrown automatically to all parent coroutines.
      There is a nice example stackoverflow.com/questions/53577907/when-to-use-coroutinescope-vs-supervisorscope

  • @StefanHolodnickDailyinvention
    @StefanHolodnickDailyinvention 4 ปีที่แล้ว +3

    This is great. It certainly beats the old way of doing asychronous requests.

  • @JoseFernandesMorais-cl5wi
    @JoseFernandesMorais-cl5wi 3 หลายเดือนก่อน

    Muito bom

  • @ihebhm276
    @ihebhm276 2 ปีที่แล้ว

    great explanation 👌 the video cover almoast everything about coroutines in a simple way

  • @avi12
    @avi12 4 ปีที่แล้ว

    Please add timestamps so it's easy to navigate

  • @apoorvgupta2511
    @apoorvgupta2511 4 ปีที่แล้ว

    Java + javascript => Kotlin
    Is it?

  • @haynesgeorge
    @haynesgeorge 4 ปีที่แล้ว

    In the unit testing section, the video mentions injecting a test dispatcher and uses it to launch the Coroutine. But the scope definition still has Dispatcher.main . Is that expected ?

  • @cdmunoz
    @cdmunoz 4 ปีที่แล้ว +9

    Thanks Manuel, such a really good job! Congrats to all Android team
    Although I have my concerns when testing coroutines, because we need to take into consideration several scenarios .. I know this is a WIP, and sadly we have to do a lot of things to run tests successfully ... it should be more straight forward. Looking forward to have improvements there, but in the end, coroutines is such a really good tool, really happy for that

  • @tonnie7079
    @tonnie7079 4 ปีที่แล้ว

    The video that made me understand Coroutines at last ..... thanks lots Vicente

  • @jeghamaymen
    @jeghamaymen 4 ปีที่แล้ว

    thanks ,that was very useful and very clear presentation

  • @rohitprabhakaran99
    @rohitprabhakaran99 3 ปีที่แล้ว

    well explained

  • @chillibits
    @chillibits 4 ปีที่แล้ว

    Thanks for that video! Was really interesting.

  • @saurabh75prakash
    @saurabh75prakash 4 ปีที่แล้ว

    The best video on coroutine.

  • @javidabbasov524
    @javidabbasov524 4 ปีที่แล้ว

    Thanks, it is too helpful

  • @srjlove2102
    @srjlove2102 4 ปีที่แล้ว

    Nice

  • @carolinekim6913
    @carolinekim6913 3 ปีที่แล้ว

    Notice and Comment Period. Chevron Deference.

  • @sergiomendes7727
    @sergiomendes7727 3 ปีที่แล้ว

    Awesome! Coroutines avoids a lot callback hell. Thank you for sharing

  • @bunhthachau3587
    @bunhthachau3587 3 ปีที่แล้ว

    Hello

  • @michaelbhavan183
    @michaelbhavan183 3 ปีที่แล้ว

    How to get job as Android developer

  • @sunwicked
    @sunwicked 4 ปีที่แล้ว

    The best explanation, I have seen till now on Coroutines.

  • @cularu1
    @cularu1 4 ปีที่แล้ว

    What's the performance cost of having yield() in every loop cycle?

    • @manuelvicnt
      @manuelvicnt 4 ปีที่แล้ว +1

      Hi! Haven't profiled that myself in a real app but seems pretty cheap: github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/common/src/Yield.kt
      This is JetBrains' recommendation :) Thanks! Manuel

  • @Narblo
    @Narblo 4 ปีที่แล้ว

    Why run the apps in JVMs? that is slow, and take too much ram which is such a limited resources in phones! Make the OSs great again like the one before android that run smooth on 1/1000 of processing power and memory

  • @ivarjar
    @ivarjar 10 หลายเดือนก่อน

    Feel sad for all the Android developers, to put a simple UI on screen, make network request and run some function in background, you have to learn a lot of confusing APIs and concepts. This is just bad designing by Android SDK team.

  • @AdnaanAhmedZohran
    @AdnaanAhmedZohran 4 ปีที่แล้ว

    lol.. first!! :P

  • @mondoshigua
    @mondoshigua ปีที่แล้ว +1

    📱🇨🇴🙋🏻‍♂️👍🏼🤝🏼