为什么 View 上的 `onDraw()` 方法接收可为 nullable canvas

why `onDraw()` method on View receives nullable canvas

在使用自定义视图时,我多次重写 onDraw(canvas:Canvas?) 方法,但我不明白为什么这个方法得到一个可为 null 的 Canvas ,视图不应该总是有一个 canvas 什么时候画画?。 我还断言它不是 null 并且它有效,但我不想冒这个风险,可能在某个时候它会变成 null。 所以首先我想了解在什么情况下该参数可以为空?

或者它只是从 java 到 kotlin 的转换过程,我可以安全地从参数中删除 ? 吗?

谢谢

因为AndroidAPI原来写在Java。在 Java 中,没有不可为 null 的值。由于 Kotlin 需要与 Java API 兼容,因此它需要是一个可为 null 的参数。

如果你真的得到一个空值,那是框架中的一个错误。我从未见过它发生。我认为你只要让它抛出 NullPointerException 就可以了,因为你不应该看到它。

郑重声明,即使 Android 框架也不会检查该参数是否为 null - 如果您传入 null,TextView.onDraw 将会崩溃。