考虑下面的代码,我试图用它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)
即使手机处于睡眠状态,我也需要在后台通过 GPS/网络更新位置。
我实现了 android 服务来归档该目标。但问题是当我将设备置于睡眠状态时,我通知通知栏中的GPS 图标消失了,因为位置更新不再起作用。
在这种情况下如何保持 GPS/网络位置更新?
P/S:我使用FusedLocationAPI和前台服务。提前致谢。
请注意,GPS-ICON 图像仅在通知栏中提及图标,我仍然保持 GPS 提供商开启。