小编Vin*_*.TV的帖子

Kotlin 协程:单线程中一次一个协程

考虑下面的代码,我试图用它Executors.newFixedThreadPool(1).asCoroutineDispatcher()来创建一个单线程调度程序;我希望其中的代码launch(singleThread){...}按顺序执行

预期结果应该如下所示,因为 async-block#2首先到达/获取singleThread

异步块#2
异步块#1
单线程块#2
单线程块#1
答案是3

但实际结果是

异步块#2
异步块#1
单线程块#1
单线程块#2
答案是3

single-thread-block-#2 和 single-thread-block-#1 似乎并行运行,singleThread在这里没有什么不同

import java.util.concurrent.Executors
import kotlinx.coroutines.*
import kotlin.system.*

val singleThread = Executors.newFixedThreadPool(1).asCoroutineDispatcher()

fun main() = runBlocking<Unit> {
    val time = measureTimeMillis {
        val one = async { // async block #1
            delay(200)
            println("async block #1")
            launch (singleThread) {
                delay(500)
                println("single thread block #1")
            }
            2
        }
        val two = async { // async block #2
            delay(100)
            println("async …
Run Code Online (Sandbox Code Playgroud)

multithreading android kotlin kotlin-coroutines

5
推荐指数
1
解决办法
7362
查看次数

如果设备休眠,则服务中的 android gps 位置将关闭

即使手机处于睡眠状态,我也需要在后台通过 GPS/网络更新位置。
我实现了 android 服务来归档该目标。但问题是当我将设备置于睡眠状态时,我通知通知栏中的GPS 图标消失了,因为位置更新不再起作用。

在这种情况下如何保持 GPS/网络位置更新?

P/S:我使用FusedLocationAPI和前台服务。提前致谢。
请注意,GPS-ICON 图像仅在通知栏中提及图标,我仍然保持 GPS 提供商开启。

service gps android fusedlocationproviderapi

2
推荐指数
1
解决办法
3756
查看次数