在 Kotlin 中创建未绑定服务
Creating unbound service in Kotlin
我想在 kotlin 中创建一个简单的未绑定服务,但我做不到。当我在 Java 中覆盖 onBind()
方法时,我可以 return null
,但在 kotlin 中它说我只允许 return IBinder
和不是 IBinder?
,这意味着它不能是 null
。除了将 MyService class 重写为 Java 之外,还有其他解决方法吗?
[已解决]谢谢大家!我真的可以把IBinder
改成IBinder?
。有效!!
正如 Enrico 提到的,您可以将 IBinder
的类型更改为 IBinder?
,它仍将与接口匹配。
示例如下:
override fun onBind(intent: Intent): IBinder? {
return null
}
一般来说,使用 Android Studio 覆盖 Android 方法时要小心。当系统实际上可以 return 一个空引用时,当它生成非空类型时,真正的问题就来了。它会导致您真正意想不到的运行时 kotlin 异常。
如果我没记错的话,我在重载 Fragment
class 和与 View
创建相关的方法时遇到了很多问题。
我想在 kotlin 中创建一个简单的未绑定服务,但我做不到。当我在 Java 中覆盖 onBind()
方法时,我可以 return null
,但在 kotlin 中它说我只允许 return IBinder
和不是 IBinder?
,这意味着它不能是 null
。除了将 MyService class 重写为 Java 之外,还有其他解决方法吗?
[已解决]谢谢大家!我真的可以把IBinder
改成IBinder?
。有效!!
正如 Enrico 提到的,您可以将 IBinder
的类型更改为 IBinder?
,它仍将与接口匹配。
示例如下:
override fun onBind(intent: Intent): IBinder? {
return null
}
一般来说,使用 Android Studio 覆盖 Android 方法时要小心。当系统实际上可以 return 一个空引用时,当它生成非空类型时,真正的问题就来了。它会导致您真正意想不到的运行时 kotlin 异常。
如果我没记错的话,我在重载 Fragment
class 和与 View
创建相关的方法时遇到了很多问题。