1
Lin0936 2020-04-22 09:58:13 +08:00 1
kotlin 协程是靠编译实现的, Android API 版本没有限制.
正在用 Kotlin + Jetpack 全套弄一个 APP, 坑也多, 不过写起来确实很爽 |
3
Tolcol 2020-04-22 10:08:19 +08:00
写起来很爽,正在用,主要是觉得 RxJava 包太大了,用的地方也不是很多,可以节约 2M+的包大小
|
4
gz911122 2020-04-22 10:08:52 +08:00
怎么听得不多..
现在不都在用么? |
5
yumerdev93 2020-04-22 10:10:37 +08:00
以前刚接触 rxjava,惊叹「哇,还可以这样」,现在用了协程后觉得 rxjava 繁琐死了,不会再使用,现在项目依赖已经没有 rxjava 了。
|
6
jinhan13789991 2020-04-22 10:13:54 +08:00
已经在用了
```kotlin override fun onClickInsertImage() { MediaSelectService().openGallery(context, MediaType.图片, 9) .flatMapConcat { it.asFlow() } .flatMapConcat { FileUploadService() .uploadFile(UriUtils.uri2File(it).absolutePath, type) .onStart { showLoadingListener.invoke(true) }//上传第一张就显示 dialog } .onCompletion { showLoadingListener.invoke(false) }//上传结束隐藏 dialog .onEach { insertImage(it) }//插入图片 .launchInAndHandleError(scope) } ``` MediaSelectService()是对 PermissionsUtils 和 RxImagePicker 的封装,会申请对应的权限,然后打开页面返回图片地址列表。 FileUploadService() 是对云存储的封装,会调用接口,拿到上传 token,再调用腾讯云的上传 sdk,最后拿到上传后的图片连接。 最后是把图片插入到富文本里。 launchInAndHandleError() 是对 kotlin 协程流的扩展方法,主要是全局统一处理错误异常。 我只能说,太 TMD 好用了。 |
7
jinhan13789991 2020-04-22 10:14:46 +08:00
Markdown 失败~
|
8
jeremaihloo 2020-04-22 10:15:37 +08:00
现在应该都在用吧,我反正两个项目在用了
|
9
wysnylc 2020-04-22 10:22:26 +08:00
|
10
binbinyouliiii 2020-04-22 10:26:57 +08:00 via Android
我觉得协程的特性在这种客户端上没什么明显的优点
|
11
youxiachai 2020-04-22 10:31:27 +08:00
因为...协程用起来太简单了..没啥值得说的...
你说协程的原理....的话..又不局限与 kotlin.... |
12
jinhan13789991 2020-04-22 10:38:55 +08:00
@binbinyouliiii 提升编程效率,简化代码结构。这还不算优点吗?
|
13
gz911122 2020-04-22 10:42:14 +08:00
|
14
whyrookie 2020-04-22 10:51:39 +08:00
kotlin 协程+jetpack,很香的
|
15
youxiachai 2020-04-22 10:56:29 +08:00
@wysnylc 老实说,协程本质是一个状态机的规范......
我很难理解有些人说什么假协程.... 讨论协程的性能的...就是实现上的区别..... 问题是,协程本质是个状态机的问题....扯实现..就扯远了...跟谈不上对比... 都是出自一个妈的论文... 感觉就跟讨论粘包一样,都不对口... |
16
richard1122 2020-04-22 10:58:44 +08:00
小坑不少,但是挺好用的。特别是从比较上层就进入携程,工具什么的都可以提供 suspend method
|
17
binbinyouliiii 2020-04-22 12:28:20 +08:00 via Android
@jinhan13789991 你编写效率再高,也不如符合直觉的传统编程啊
|
18
rosu 2020-04-22 12:36:21 +08:00 via iPhone
新项目可以考虑加入。迭代旧代码就算了。suspended method 要包住一个同步方法,不然不用协程就无法调用。
|
19
nicevar 2020-04-22 12:46:43 +08:00
对写客户端来说,不太实用,个人觉得没有对编程效率没有任何提升,kotlin 的代码已经能做到很简洁了,很多时候还不如对上层进行一定的封装
|
20
gz911122 2020-04-22 13:08:40 +08:00
@binbinyouliiii 协程不比回调或者 rx 更符合直觉么?
|
21
binbinyouliiii 2020-04-22 13:19:44 +08:00 via Android
@gz911122 我说的就是异步编程在客户端上优点不明显
|
22
gz911122 2020-04-22 13:20:44 +08:00
|
23
zhouquanbest 2020-04-22 13:32:16 +08:00
百度输入法好像再用吧 量挺大
我们生产环境不敢上,毕竟很多人线程都没搞明白,我们 apm 监控体系都没支持它,万一写坑了还不好找。 现在像 gradle 插件啊 不影响运行时的地方 我们都开始用了 |
24
binbinyouliiii 2020-04-22 13:34:34 +08:00
@gz911122 #22 我不知道我们理解的是不是一样的,你说的都是异步是指操作类的异步吧,我说的异步是指充分利用 CPU 的这种异步,客户端按理说需要这种的场景比较少。
|
25
gz911122 2020-04-22 13:36:29 +08:00
@binbinyouliiii
我说的就是通常的异步啊. 点击按钮,发起请求,显示结果. 这不是一个典型的异步场景吗? 说确切点,移动端上除了 ui 操作,都需要异步啊. 没明白你说的什么意思,也没太懂为啥移动端上要充分利用 cpu,拿用户手机挖矿吗? |
26
gz911122 2020-04-22 13:38:36 +08:00
@binbinyouliiii 你给我造成的感觉是,你是做 java 后端的,对 android 开发并不熟悉. 你讲的仿佛是并发而不是移动端上通常所说的异步.
|
27
WebKit 2020-04-22 13:59:40 +08:00 via Android
已经在用了。是很方便
|
28
WanzizZ 2020-04-22 14:06:30 +08:00
哈哈 今晚和明晚扔物线有个课程专门讲 kotlin 协程的,两分钱,可以白嫖看看 https://ke.qq.com/course/2204707?tuin=9c77727#term_id=102307391
|
29
hantsy 2020-04-22 14:13:12 +08:00
Google 官方都有视频 Kotlin 系列教程,包括 Kotlin coroutines 在 Android 上应用,(我虽然不做 Android )
|
30
AliMaster 2020-04-22 14:28:34 +08:00
kotlin 协程在安卓上是用线程池实现的一套线程池框架,不愿意翻源码可以看看扔物线朱凯的视频和文章 https://kaixue.io/tag/kotlin-coroutines/
|
31
Vedar 2020-04-22 14:39:07 +08:00
koltin 的就是真正协程 和 python js 的一样,倒是 go 的不能叫协程 不是一个东西
|
32
hlayk 2020-04-22 18:20:45 +08:00
多尝试 你会喜欢上的
|