Kotlin Coroutines 101 - Android Conference Talks

Поділитися
Вставка
  • Опубліковано 24 лип 2024
  • Manuel Vivo, Android Engineer from the Developer Relations team at Google, gives an introduction to Kotlin Coroutines. Stay tuned to find out about the problems coroutines are trying to solve, how to use coroutines in Android, how to test them, and much more!
    Coroutines codelab → goo.gle/2R3DS9k
    Advanced coroutines codelab → goo.gle/2R1ojz6
    Testing coroutines talk → goo.gle/3bMiUn8
    Cancellation and exceptions in coroutines → goo.gle/39wgxU8
    Android Conference Talks playlist → goo.gle/2WmhoEb
    Subscribe to Android Developers → goo.gle/AndroidDevs
    #Kotlin #AndroidDev #Featured
  • Наука та технологія

КОМЕНТАРІ • 77

  • @lucye7320
    @lucye7320 4 роки тому +5

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

  • @marlonlom
    @marlonlom 4 роки тому +5

    one of the best 101 videos for coroutines

  • @alexeys.7829
    @alexeys.7829 4 роки тому +6

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

  • @tonnie7079
    @tonnie7079 4 роки тому

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

  • @goobar
    @goobar 4 роки тому +8

    Thanks Manuel! Nicely done 👍

  • @MikeMitterer
    @MikeMitterer 4 роки тому +5

    THE best introduction about coroutines - Thanks

  • @whoadityanawandar
    @whoadityanawandar 3 роки тому +6

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

  • @davidespano8674
    @davidespano8674 Рік тому +1

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

  • @chillibits
    @chillibits 4 роки тому

    Thanks for that video! Was really interesting.

  • @mandeepchoutapelly2939
    @mandeepchoutapelly2939 4 роки тому +1

    Excellent Explanation. Thanks a lot!

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

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

  • @ihebhm276
    @ihebhm276 2 роки тому

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

  • @jeghamaymen
    @jeghamaymen 4 роки тому

    thanks ,that was very useful and very clear presentation

  • @StefanHolodnickDailyinvention
    @StefanHolodnickDailyinvention 4 роки тому +3

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

  • @saurabh75prakash
    @saurabh75prakash 4 роки тому

    The best video on coroutine.

  • @lukaslechner
    @lukaslechner 4 роки тому +2

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

  • @emmanuelenya
    @emmanuelenya 3 місяці тому

    Good stuff, thank you!

  • @MaisUmSomente
    @MaisUmSomente 2 роки тому +1

    Great explanation. thanks

  • @javidabbasov524
    @javidabbasov524 4 роки тому

    Thanks, it is too helpful

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

  • @m.irtizakhursheed3040
    @m.irtizakhursheed3040 2 роки тому

    Best coroutine explanation.

  • @ikroopsinghkalsi3810
    @ikroopsinghkalsi3810 3 роки тому

    Thank you so much!

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

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

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

  • @SdThix
    @SdThix 4 роки тому

    Great video.

  • @StevdzaSan
    @StevdzaSan 4 роки тому

    Good explanation.

  • @bylee8165
    @bylee8165 2 роки тому +1

    this is great

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

  • @dev_jeongdaeri
    @dev_jeongdaeri 4 роки тому

    awesome! 😎

  • @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 3 роки тому

      @@manuelvicnt 👍

  • @AmitJayant
    @AmitJayant Рік тому

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

  • @Carlos-xz9zq
    @Carlos-xz9zq 4 роки тому +1

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

  • @l_a_h797
    @l_a_h797 8 місяців тому

    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?

  • @sunwicked
    @sunwicked 3 роки тому

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

  • @crayoncolors2763
    @crayoncolors2763 7 місяців тому

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

  • @sergiomendes7727
    @sergiomendes7727 3 роки тому

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

  • @yamsergey
    @yamsergey 4 роки тому +3

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

  • @straykidsco2421
    @straykidsco2421 Рік тому +1

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

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

  • @rohitprabhakaran99
    @rohitprabhakaran99 3 роки тому

    well explained

  • @TheVente1
    @TheVente1 4 роки тому

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

  • @heshansandeepa9471
    @heshansandeepa9471 Місяць тому

    Nice

  • @Moon-oy5ko
    @Moon-oy5ko 4 роки тому +3

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

  • @jamessingh8468
    @jamessingh8468 3 роки тому +1

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

  • @avi12
    @avi12 3 роки тому

    Please add timestamps so it's easy to navigate

  • @kaustubhpatange
    @kaustubhpatange 4 роки тому +3

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

  • @JoseFernandesMorais-cl5wi
    @JoseFernandesMorais-cl5wi Місяць тому

    Muito bom

  • @lycheejuicelichigaming2263
    @lycheejuicelichigaming2263 4 роки тому +28

    Dislikers are java programmers😉😋😜

    • @jhngolan
      @jhngolan 3 роки тому +1

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

    • @UpLiftingU007
      @UpLiftingU007 Рік тому

      Lol😂

    • @ElizabeteRodrigues-qw3hp
      @ElizabeteRodrigues-qw3hp 7 місяців тому

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

  • @hectorantoniotafoyagarcia4735
    @hectorantoniotafoyagarcia4735 2 роки тому

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

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

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

  • @apoorvgupta2511
    @apoorvgupta2511 4 роки тому

    Java + javascript => Kotlin
    Is it?

  • @carolinekim6913
    @carolinekim6913 2 роки тому

    Notice and Comment Period. Chevron Deference.

  • @bunhthachau3587
    @bunhthachau3587 3 роки тому

    Hello

  • @michaelbhavan183
    @michaelbhavan183 3 роки тому

    How to get job as Android developer

  • @AdnaanAhmedZohran
    @AdnaanAhmedZohran 4 роки тому

    lol.. first!! :P

  • @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 8 місяців тому

    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.

  • @mondoshigua
    @mondoshigua Рік тому +1

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

  • @srjlove2102
    @srjlove2102 4 роки тому

    Nice