先把结论放在前面:Canvas是"命令式绘制接口",Bitmap是"像素内存容器",两者的性能问题根因完全不同。Canvas 慢的根因在每帧的绘制指令数与状态切换(重绘、离屏图层、save/restore滥用);Bitmap 慢的根因在像素数据量与采样策略(未采样、格式、缓存命中)。把这两类慢混在一起讲"加缓存",是这题最常见的失分点。面试官问"Canvas 与 Bitmap 为什么慢",真正想听的是一整套排查逻辑:现象是什么、用什么指标度量、瓶颈在哪一层、改完怎么证明有效。这套动作平时没做过,现场编不出来。所以这篇的重点不在 API,而在指标与归因。像素账:先把内存算清楚Bitmap的内存占用有一个可以直接算的公式:占用字节 ≈ 宽度 × 高度 × 每像素字节数每像素字节数由Config决定:ARGB_8888= 4 字节(默认,带 alpha,内存最大)RGB_565= 2 字节(无 alpha,内存减半)ARGB_4444
阅读完成 · 觉得有帮助?