在 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 创建相关的方法时遇到了很多问题。