在图形堆栈中,每层的缓冲区缓存位于混合渲染器 HAL 和 SurfaceFlinger 之间,从而减少与通过 IPC 发送文件描述符相关的开销。在 Android 14 之前的版本中,当 GraphicBufferProducer 与 SurfaceFlinger GraphicBufferConsumer 断开连接时(例如 MediaCodec 与 SurfaceView 断开连接时),此缓冲区缓存不会被完全清除。从 Android 14 开始,您可以强制完全清除此缓冲区缓存,以减少图形的内存消耗。
注意:当用户在配备高分辨率显示屏且内存有限的设备(例如电视)上的某个应用中开始播放和停止播放视频时,此功能的优势最为明显。
从以下两个选项中选择一项:
- 对于发布时搭载 Android 14 及更高版本的设备,您必须实现新的 3.2 版混合渲染器 HAL API。此选项在默认情况下处于启用状态,并能最大限度地节省内存。升级到 Android 14 及更高版本的设备也可以使用此选项来实现全部内存优势。
- 对于升级到 Android 14 的设备,如果您不想实现混合渲染器 HAL 3.2 API,可以改为启用向后兼容选项。此选项节省的内存几乎与上一个选项一样多。
以下两部分介绍了如何实现各个选项。