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
}
问题是在activitiesgetService()
中总是返回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
}
}