说说Android--显示系统(一)

95 阅读1分钟

问题一:讲讲Android的显示系统?

如果面试中遇到这种笼统的问题,我们该怎么回答?

是不是觉得脑子里千万种思路,但是没办法理出一个头绪?别慌,你不是一个人,请不要胡乱断句。

讲讲我的理解:

显示系统:可以理解为 生产/消费者 模型 :

生产者:生产图像内容 放入阻塞队列中
消费者:将内容从阻塞队列中获取,显示在屏幕上      

image.png

引申的问题:

  1. 有哪些生产者,生产者如何生产图像内容?
  2. 消费者是什么?
  3. 阻塞队列是什么?
  4. ... 可以引申很多问题

1、生产者有哪些?

图像流生产方可以是生成图形缓冲区以供消耗的任何内容。例如 OpenGL ES、Canvas 2D 和 mediaserver 视频解码器

翻译:OpenGL ES Canvas 2D MediaPlayer 等 用来生产图像内容(数据)

2、消费者是哪些?

最常见是 SurfaceFlinger 其他还有 OpenGL ES 、ImageReader (source.android.com/docs/core/g…)

3、阻塞队列是什么:

image.png

简单总结:Android显示系统是 Canvas OpenGl ES MediaPlayer等生产图像数据放入到BufferQueue中,SurfaceFling ImageReader消费者等从BufferQueue中拿到数据,再送给屏幕显示出来。

未完待续...