Kotlin Coroutines 101 - Android Conference Talks

Поделиться
HTML-код
  • Опубликовано: 19 окт 2024

Комментарии • 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

  • @MikeMitterer
    @MikeMitterer 4 года назад +5

    THE best introduction about coroutines - Thanks

  • @lucye7320
    @lucye7320 4 года назад +5

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

  • @goobar
    @goobar 4 года назад +9

    Thanks Manuel! Nicely done 👍

  • @StefanHolodnickDailyinvention
    @StefanHolodnickDailyinvention 4 года назад +3

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

  • @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 😀

  • @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!

  • @alexeys.7829
    @alexeys.7829 4 года назад +6

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

  • @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

  • @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.

  • @l_a_h797
    @l_a_h797 11 месяцев назад

    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?

  • @crayoncolors2763
    @crayoncolors2763 10 месяцев назад +1

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

  • @straykidsco2421
    @straykidsco2421 Год назад +1

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

  • @tonnie7079
    @tonnie7079 4 года назад

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

  • @davidespano8674
    @davidespano8674 2 года назад +1

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

  • @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.

  • @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 👍

  • @ihebhm276
    @ihebhm276 2 года назад

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

  • @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 года назад

      ความทนถล

  • @m.irtizakhursheed3040
    @m.irtizakhursheed3040 2 года назад

    Best coroutine explanation.

  • @lukaslechner
    @lukaslechner 4 года назад +2

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

  • @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

  • @MaisUmSomente
    @MaisUmSomente 2 года назад +1

    Great explanation. thanks

  • @Moon-oy5ko
    @Moon-oy5ko 4 года назад +3

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

  • @kaustubhpatange
    @kaustubhpatange 4 года назад +3

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

  • @saurabh75prakash
    @saurabh75prakash 4 года назад

    The best video on coroutine.

  • @TheVente1
    @TheVente1 4 года назад

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

  • @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 ?

  • @mandeepchoutapelly2939
    @mandeepchoutapelly2939 4 года назад +1

    Excellent Explanation. Thanks a lot!

  • @rule411
    @rule411 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

    • @rule411
      @rule411 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.

  • @Carlos-xz9zq
    @Carlos-xz9zq 4 года назад +1

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

  • @lijulius8121
    @lijulius8121 4 года назад +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.

  • @chillibits
    @chillibits 4 года назад

    Thanks for that video! Was really interesting.

  • @NomadicDmitry
    @NomadicDmitry Месяц назад

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

  • @jeghamaymen
    @jeghamaymen 4 года назад

    thanks ,that was very useful and very clear presentation

  • @AmitJayant
    @AmitJayant 2 года назад

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

  • @emmanuelenya
    @emmanuelenya 6 месяцев назад

    Good stuff, thank you!

  • @jamessingh8468
    @jamessingh8468 3 года назад +1

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

  • @sunwicked
    @sunwicked 4 года назад

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

  • @bylee8165
    @bylee8165 2 года назад +1

    this is great

  • @dev_jeongdaeri
    @dev_jeongdaeri 4 года назад

    awesome! 😎

  • @ikroopsinghkalsi3810
    @ikroopsinghkalsi3810 3 года назад

    Thank you so much!

  • @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 2 года назад

      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///

  • @avi12
    @avi12 4 года назад

    Please add timestamps so it's easy to navigate

  • @sergiomendes7727
    @sergiomendes7727 3 года назад

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

  • @javidabbasov524
    @javidabbasov524 4 года назад

    Thanks, it is too helpful

  • @hectorantoniotafoyagarcia4735
    @hectorantoniotafoyagarcia4735 2 года назад

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

  • @SdThix
    @SdThix 4 года назад

    Great video.

  • @rohitprabhakaran99
    @rohitprabhakaran99 3 года назад

    well explained

  • @heshansandeepa9471
    @heshansandeepa9471 3 месяца назад

    Nice

  • @JoseFernandesMorais-cl5wi
    @JoseFernandesMorais-cl5wi 4 месяца назад

    Muito bom

  • @apoorvgupta2511
    @apoorvgupta2511 4 года назад

    Java + javascript => Kotlin
    Is it?

  • @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

  • @carolinekim6913
    @carolinekim6913 3 года назад

    Notice and Comment Period. Chevron Deference.

  • @michaelbhavan183
    @michaelbhavan183 3 года назад

    How to get job as Android developer

  • @bunhthachau3587
    @bunhthachau3587 3 года назад

    Hello

  • @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

  • @Originalimoc
    @Originalimoc Год назад

    Your CC is worse than auto generated one🌚

  • @ivarjar
    @ivarjar 11 месяцев назад

    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

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

  • @srjlove2102
    @srjlove2102 4 года назад

    Nice