问题一:讲讲Android的显示系统?
如果面试中遇到这种笼统的问题,我们该怎么回答?
是不是觉得脑子里千万种思路,但是没办法理出一个头绪?别慌,你不是一个人,请不要胡乱断句。
讲讲我的理解:
显示系统:可以理解为 生产/消费者 模型 :
生产者:生产图像内容 放入阻塞队列中
消费者:将内容从阻塞队列中获取,显示在屏幕上
引申的问题:
- 有哪些生产者,生产者如何生产图像内容?
- 消费者是什么?
- 阻塞队列是什么?
- ... 可以引申很多问题
1、生产者有哪些?
图像流生产方可以是生成图形缓冲区以供消耗的任何内容。例如 OpenGL ES、Canvas 2D 和 mediaserver 视频解码器
翻译:OpenGL ES Canvas 2D MediaPlayer 等 用来生产图像内容(数据)
2、消费者是哪些?
最常见是 SurfaceFlinger 其他还有 OpenGL ES 、ImageReader (source.android.com/docs/core/g…)
3、阻塞队列是什么:
简单总结:Android显示系统是 Canvas OpenGl ES MediaPlayer等生产图像数据放入到BufferQueue中,SurfaceFling ImageReader消费者等从BufferQueue中拿到数据,再送给屏幕显示出来。
未完待续...