android - 为什么 View 上的 `onDraw()` 方法接收可为空的画布
问题描述
在使用自定义视图中,我onDraw(canvas:Canvas?)
多次覆盖方法,但我不明白为什么这个方法会得到一个可为空Canvas
的,视图不应该在绘制时总是有一个画布来绘制吗?我还断言它为非 null 并且它有效,但我不想冒这个风险,可能在某些时候它会变为 null。所以首先我想了解在什么情况下参数可以为空?
或者它只是来自 java 到 kotlin 的转换过程,我可以安全地?
从参数中删除?
谢谢
解决方案
因为 Android API 最初是用 Java 编写的。在 Java 中,没有不可为空的值。由于 Kotlin 需要与该 Java API 兼容,因此它需要是一个可为空的参数。
如果你真的得到一个空值,那就是框架中的一个错误。我从未见过它发生。我认为如果它抛出 NullPointerException 是安全的,因为你永远不应该看到它。
作为记录,即使是 Android 框架也不会检查该参数是否为 null - 如果您传入 null,TextView.onDraw 将崩溃。
推荐阅读
- datetime - 如何在时区为 IST 的 presto 中将纪元时间转换为人类可读的日期
- javascript - 从 Wix 到 Zapier 的 Webhook
- python - 在 Python 中不工作的摩尔斯电码解密器
- c++ - 异常基础知识:为什么while循环会变成无限循环?
- ssh - 在 MobaXterm 中打开会话时如何自动启动隧道?
- sqlite - 如何仅返回 SQLite 表中满足单个列的特定“组”标准的不同行?
- html - 如何在行的中间对齐 svg 图像?
- paypal - `notify_url` 如何保证请求是 3tr 支付?
- android-studio - 如何发出警报
- javascript - array.map() 不返回单个数组