从事android开发一年来,在andorid领域突飞猛进。
说说几大收获。
1.andorid基本上就是建立在binder机制上,来实现模块与模块之间的通信。
所谓的service,activity,provider,receiver四大金刚之间的通信都是通过binder进行的。
对客户端来说,binder本身是一个int。
对于服务端来说,binder是一块内存地址。
从客户端的binder转换到服务端的binder的过程是在内核中实现的。
2.android输入输出这一块底层采用的是 管道+共享内存的方式实现进程间的通信。从而将事件从驱动层过度到各个window。
3.android的View这一块采用经典的树状结构。用了一些设计模式,效率较低。这个比较简单。就不说了。opengl本身已经使用了双缓冲。所以双缓冲在android中的概念已经不存在。多级缓冲的效率并不高,所以也就不要再使用了。
4.Surface这一块。一个window对应一个surface。而一个surface仅仅存在于客户端。在服务端叫做layer,layer是通过共享内存的方式实现的,这样就可以达到服务端和客户端的缓冲区共享起来。一共8M。使用那一部分,主要是由offset和size决定。
5.关于特效等的制作都是matrix在作怪。学习矩阵和openGL是做特效的基础课程。不管中间经历了什么。从本质上来说,都是一个二维图形,到一个二维图形的映射。我们肉眼看到的东西始终是二维的。这是本质属性。
所谓的3D,也只是一种视觉欺骗罢了。照相机本身出的图实际上就是3D的。
6.明年准备涉入jni这一块。对于openGL的深入理解是打通android图形的关键所在。egl之类的库也是很重要的东东。