Kotlin:如何在binder中返回正在运行的服务实例?

Alm*_*maz 4 android kotlin

我有Java代码,Service并试图将其转换为Kotlin.

class MyService : Service() {

    companion object MyBinder : Binder() {
        fun getService() : MyService? {
            return MyService::class.objectInstance
        }
    }

    // service implementation

}
Run Code Online (Sandbox Code Playgroud)

问题是在活动中getService()始终返回null.我确定它service是在之前启动的,我在logcat中看到它.我建议这个来自Java代码的自动生成的行应该是不同的但我找不到解决方案:

return MyService::class.objectInstance   
Run Code Online (Sandbox Code Playgroud)

在Java代码中它是:

return MyService.this 
Run Code Online (Sandbox Code Playgroud)

San*_*esh 13

下面的代码将有助于您

class MyService : Service() {

    inner class MyBinder : Binder() {
        fun getService() : MyService? {
            return this@MyService
        }
    }

    // service implementation

}
Run Code Online (Sandbox Code Playgroud)

关于Kotlin This Expression中此表达式的更多信息