使用内联/跨内联函数时,Android Studio调试器不起作用

时间:2019-07-18 20:39:08

标签: android multithreading android-studio kotlin

我目前正在尝试在Kotlin上实现Web服务,我提出的解决方案可以按预期工作,但Android Studio调试器却无法。

这是我的简化代码:

fun loop(){
    Handler().postDelayed({
        subscribeCommand<TestModel> {
            println("RESULT")
            loop()
        }
    }, 1000)
}

fun startRequest(callback : () -> Unit){
    callback()
}

inline fun <reified T> subscribeCommand(crossinline onResult : (MutableList<T>) -> Unit){
    startRequest {
        onResult(mutableListOf<T>())
    }
}

此代码在调用loop()

时每秒在控制台中显示“结果”

我有一个额外的功能startRequest(),那是因为我将在其他地方使用该回调。

println("RESULT")中放置断点时,它在应用程序第一次启动时起作用,但是随后我删除了断点并继续执行。 几秒钟后,我将断点放回去,代码仍然按预期运行,但是调试器不再捕获它。

我需要使用泛型类型,这就是为什么我使用这些内联/跨内联函数并且我没有找到其他解决方法。

这就是我正在使用的 Android Studio 3.4.1 摇篮3.4.1 科特林1.3.41 MinSdkVersion 16 TargetSdkVersion 28

1 个答案:

答案 0 :(得分:0)

通过将参数从crossinline更改为noinline

解决了此问题