Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin:如何在binder中返回正在运行的服务实例?_Android_Kotlin - Fatal编程技术网

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

Android Kotlin:如何在binder中返回正在运行的服务实例?,android,kotlin,Android,Kotlin,我正在为服务编写Java代码,并试图将其转换为Kotlin class MyService : Service() { companion object MyBinder : Binder() { fun getService() : MyService? { return MyService::class.objectInstance } } // service implementation } 问题是在

我正在为
服务
编写Java代码,并试图将其转换为Kotlin

class MyService : Service() {

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

    // service implementation

}
问题是在activities
getService()
中总是返回null。我确信
服务
之前已启动,我在logcat中看到它。我建议Java代码自动生成的这一行应该有所不同,但我找不到解决方案:

return MyService::class.objectInstance   
在Java代码中,它是:

return MyService.this 

下面的代码将帮助您

class MyService : Service() {

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

    // service implementation

}
有关Kotlin中此表达式的详细信息

这是一条捷径(包括额外的onBind())


是的,这是正确的解决方案,现在可以了,谢谢!
class MyService : Service() {

    override fun onBind(intent: Intent) = LocalBinder()

    inner class LocalBinder : Binder() {
        fun getService() = this@SensorService
    }
}