bennyhuo / Bennyhuo

bennyhuo.vercel.app
8 stars 3 forks source link

破解 Kotlin 协程(8) - Android 篇 | Bennyhuo #22

Open bennyhuo opened 5 years ago

bennyhuo commented 5 years ago

https://www.bennyhuo.com/2019/05/27/coroutine-android/#more

Android 上面使用协程来替代回调或者 RxJava 实际上是一件非常轻松的事儿,我们甚至可以在更大的范围内结合 UI 的生命周期做控制协程的执行状态~

landingpencil commented 5 years ago

666👍🏾👍🏾👍🏾👍🏿👍👍🏻👍🏻👍🏿👍🏽

l123456789jy commented 5 years ago

activity是java写的如何使用作用域呢

bennyhuo commented 5 years ago

@l123456789jy activity是java写的如何使用作用域呢

想了下你还是把 Activity 转 Kotlin 吧。虽然 Java 也可以构造作用域,但感觉就是自找麻烦。

l123456789jy commented 5 years ago

@enbandari 是的目前是转kt在这样搞

HexlDL commented 4 years ago

请问下如果结合ViewModel是不是会更好一些,因为viewmodel内部直接给我们提供了viewscope作用域,如果想cancel的话直接继承viewmodel 并重写 onCleard() { viewscope.cancel() } 这样就可以

bennyhuo commented 4 years ago

@HexlDL 当时写这篇文章的时候大概几乎同时 Google 才发布了你说的 ViewModelScope。要不然我都懒得写这个框架~

ZhZhZhen commented 3 years ago

@HexlDL 请问下如果结合ViewModel是不是会更好一些,因为viewmodel内部直接给我们提供了viewscope作用域,如果想cancel的话直接继承viewmodel 并重写 onCleard() { viewscope.cancel() } 这样就可以

我看viewModelScope,会在ViewModel.clear()方法中被cancel()掉,应该不用我们主动去重写onCleard()然后cancel()吧

wsdydeni commented 2 years ago

@ZhZhZhen

@HexlDL 请问下如果结合ViewModel是不是会更好一些,因为viewmodel内部直接给我们提供了viewscope作用域,如果想cancel的话直接继承viewmodel 并重写 onCleard() { viewscope.cancel() } 这样就可以

我看viewModelScope,会在ViewModel.clear()方法中被cancel()掉,应该不用我们主动去重写onCleard()然后cancel()吧

确实是的 重写Closeable的Close(),调用coroutineContext.cancel()取消