【Koltin Flow(一)】五种创建flow的方式
【Koltin Flow(二)】Flow操作符之末端操作符
【Koltin Flow(三)】Flow操作符之中间操作符(一)
【Koltin Flow(三)】Flow操作符之中间操作符(二)
【Koltin Flow(三)】Flow操作符之中间操作符(三)
【Koltin Flow(四)】Flow背压
【Koltin Flow(五)】SharedFlow及StateFlow
var time :Long = 0
flow {
repeat(10){
delay(100)
emit(it)
}
}.onStart {
time = System.currentTimeMillis()
}.onCompletion {
Log.d(TAG.TAG, "finish cost time ${System.currentTimeMillis() - time}")
}.collect {
delay(1000)
Log.d(TAG.TAG, "it is $it,cost time ${System.currentTimeMillis() - time}")
}
2022-08-02 16:44:10.338 9463-9489/edu.test.demo D/Test-TAG: it is 0,cost time 1118
2022-08-02 16:44:11.442 9463-9489/edu.test.demo D/Test-TAG: it is 1,cost time 2222
2022-08-02 16:44:12.543 9463-9489/edu.test.demo D/Test-TAG: it is 2,cost time 3323
2022-08-02 16:44:13.645 9463-9489/edu.test.demo D/Test-TAG: it is 3,cost time 4425
2022-08-02 16:44:14.749 9463-9489/edu.test.demo D/Test-TAG: it is 4,cost time 5529
2022-08-02 16:44:15.852 9463-9489/edu.test.demo D/Test-TAG: it is 5,cost time 6632
2022-08-02 16:44:16.955 9463-9489/edu.test.demo D/Test-TAG: it is 6,cost time 7735
2022-08-02 16:44:18.059 9463-9489/edu.test.demo D/Test-TAG: it is 7,cost time 8839
2022-08-02 16:44:19.162 9463-9489/edu.test.demo D/Test-TAG: it is 8,cost time 9942
2022-08-02 16:44:20.264 9463-9489/edu.test.demo D/Test-TAG: it is 9,cost time 11044
2022-08-02 16:44:20.264 9463-9489/edu.test.demo D/Test-TAG: finish cost time 11044
var time :Long = 0
flow {
repeat(10){
delay(100)
emit(it)
}
}.onStart {
time = System.currentTimeMillis()
}.onCompletion {
Log.d(TAG.TAG, "finish cost time ${System.currentTimeMillis() - time}")
}.buffer().collect {
delay(1000)
Log.d(TAG.TAG, "it is $it,cost time ${System.currentTimeMillis() - time}")
}
2022-08-02 16:48:29.114 9531-9558/edu.test.demo D/Test-TAG: finish cost time 1024
2022-08-02 16:48:29.205 9531-9558/edu.test.demo D/Test-TAG: it is 0,cost time 1115
2022-08-02 16:48:30.207 9531-9558/edu.test.demo D/Test-TAG: it is 1,cost time 2117
2022-08-02 16:48:31.209 9531-9558/edu.test.demo D/Test-TAG: it is 2,cost time 3119
2022-08-02 16:48:32.210 9531-9558/edu.test.demo D/Test-TAG: it is 3,cost time 4120
2022-08-02 16:48:33.212 9531-9558/edu.test.demo D/Test-TAG: it is 4,cost time 5122
2022-08-02 16:48:34.213 9531-9558/edu.test.demo D/Test-TAG: it is 5,cost time 6123
2022-08-02 16:48:35.215 9531-9558/edu.test.demo D/Test-TAG: it is 6,cost time 7125
2022-08-02 16:48:36.216 9531-9558/edu.test.demo D/Test-TAG: it is 7,cost time 8126
2022-08-02 16:48:37.217 9531-9558/edu.test.demo D/Test-TAG: it is 8,cost time 9127
2022-08-02 16:48:38.219 9531-9558/edu.test.demo D/Test-TAG: it is 9,cost time 10129
var time :Long = 0
flow {
repeat(10){
delay(100)
emit(it)
}
}.onStart {
time = System.currentTimeMillis()
}.onCompletion {
Log.d(TAG.TAG, "finish cost time ${System.currentTimeMillis() - time}")
}.buffer(5,BufferOverflow.SUSPEND).collect {
delay(1000)
Log.d(TAG.TAG, "it is $it,cost time ${System.currentTimeMillis() - time}")
}
2022-08-02 16:52:30.596 9668-9695/edu.test.demo D/Test-TAG: it is 0,cost time 1120
2022-08-02 16:52:31.597 9668-9695/edu.test.demo D/Test-TAG: it is 1,cost time 2121
2022-08-02 16:52:32.599 9668-9695/edu.test.demo D/Test-TAG: it is 2,cost time 3123
2022-08-02 16:52:33.601 9668-9694/edu.test.demo D/Test-TAG: it is 3,cost time 4125
2022-08-02 16:52:33.601 9668-9694/edu.test.demo D/Test-TAG: finish cost time 4125
2022-08-02 16:52:34.602 9668-9694/edu.test.demo D/Test-TAG: it is 4,cost time 5126
2022-08-02 16:52:35.605 9668-9694/edu.test.demo D/Test-TAG: it is 5,cost time 6129
2022-08-02 16:52:36.607 9668-9694/edu.test.demo D/Test-TAG: it is 6,cost time 7131
2022-08-02 16:52:37.609 9668-9694/edu.test.demo D/Test-TAG: it is 7,cost time 8133
2022-08-02 16:52:38.610 9668-9694/edu.test.demo D/Test-TAG: it is 8,cost time 9134
2022-08-02 16:52:39.612 9668-9694/edu.test.demo D/Test-TAG: it is 9,cost time 10136
var time :Long = 0
flow {
repeat(10){
delay(100)
emit(it)
}
}.onStart {
time = System.currentTimeMillis()
}.onCompletion {
Log.d(TAG.TAG, "finish cost time ${System.currentTimeMillis() - time}")
}.buffer(5,BufferOverflow.DROP_OLDEST).collect {
delay(1000)
Log.d(TAG.TAG, "it is $it,cost time ${System.currentTimeMillis() - time}")
}
2022-08-02 17:00:03.800 9739-9767/edu.test.demo D/Test-TAG: finish cost time 1028
2022-08-02 17:00:03.892 9739-9767/edu.test.demo D/Test-TAG: it is 0,cost time 1120
2022-08-02 17:00:04.894 9739-9767/edu.test.demo D/Test-TAG: it is 5,cost time 2122
2022-08-02 17:00:05.896 9739-9767/edu.test.demo D/Test-TAG: it is 6,cost time 3124
2022-08-02 17:00:06.896 9739-9767/edu.test.demo D/Test-TAG: it is 7,cost time 4124
2022-08-02 17:00:07.899 9739-9767/edu.test.demo D/Test-TAG: it is 8,cost time 5127
2022-08-02 17:00:08.900 9739-9767/edu.test.demo D/Test-TAG: it is 9,cost time 6128
var time :Long = 0
flow {
repeat(10){
delay(100)
emit(it)
}
}.onStart {
time = System.currentTimeMillis()
}.onCompletion {
Log.d(TAG.TAG, "finish cost time ${System.currentTimeMillis() - time}")
}.buffer(5,BufferOverflow.DROP_LATEST).collect {
delay(1000)
Log.d(TAG.TAG, "it is $it,cost time ${System.currentTimeMillis() - time}")
}
2022-08-02 17:05:41.508 9822-9847/edu.test.demo D/Test-TAG: finish cost time 1031
2022-08-02 17:05:41.596 9822-9847/edu.test.demo D/Test-TAG: it is 0,cost time 1119
2022-08-02 17:05:42.597 9822-9847/edu.test.demo D/Test-TAG: it is 1,cost time 2120
2022-08-02 17:05:43.599 9822-9847/edu.test.demo D/Test-TAG: it is 2,cost time 3122
2022-08-02 17:05:44.600 9822-9847/edu.test.demo D/Test-TAG: it is 3,cost time 4123
2022-08-02 17:05:45.605 9822-9847/edu.test.demo D/Test-TAG: it is 4,cost time 5128
2022-08-02 17:05:46.606 9822-9847/edu.test.demo D/Test-TAG: it is 5,cost time 6129
var time :Long = 0
flow {
repeat(10){
delay(100)
emit(it)
}
}.onStart {
time = System.currentTimeMillis()
}.onCompletion {
Log.d(TAG.TAG, "finish cost time ${System.currentTimeMillis() - time}")
}.conflate().collect {
delay(1000)
Log.d(TAG.TAG, "it is $it,cost time ${System.currentTimeMillis() - time}")
}
2022-08-02 17:09:06.504 9886-9913/edu.test.demo D/Test-TAG: finish cost time 1024
2022-08-02 17:09:06.593 9886-9913/edu.test.demo D/Test-TAG: it is 0,cost time 1113
2022-08-02 17:09:07.596 9886-9913/edu.test.demo D/Test-TAG: it is 9,cost time 2116