- 博客(12)
- 资源 (1)
- 收藏
- 关注
原创 Parcel相关
java中的serialization Parcel的使用 AIDL中的inoutinout 学习android源代码,首先需要打好基础。binder是android的基础,而Parcel又是binder的基础。 java中的serialization java provides a mechanism, called object serialization where an object
2016-01-26 21:48:00 2126
原创 android graphic(6)—surfaceflinger和MessageQueue
MessageQueue等待消息 epoll监听fd pipe fd导致epoll_wait返回 BitTube fd导致epoll_wait返回MessageQueue(简称为MQ)是surfaceflinger(简称为SF)主线程中消息处理的“管家”,所有子线程要和主线程打交道都需要通过MQ,例如发送消息,发送Vsync信号等,这里主要分析MQ具体的实现流程。 下面这幅图是MQ处理消
2016-01-26 12:48:23 2825
原创 android graphic(5)—surfaceflinger和Vsync (简化)
surfaceflinger中类的关系 HWC驱动DispSync 上一节分析了Vsync的多个类之间的关系,感觉非常不清晰,特地画了一张图,感觉清晰了很多。(黄色的方框是类名,绿色方框为field,联系用虚线箭头表示,如果不同线条之间有重叠,用了不同的颜色) surfaceflinger中类的关系 下面照着这张图,梳理下android 4.4 SF中Vsync相关类之间的联系,surfacefl
2016-01-25 17:12:10 2911 2
原创 android graphic(4)—surfaceflinger和Vsync
android44中的实现 整体流程 HWComposer对象的建立 EventControlThread闸刀的建立 DispSync和DispSyncThread DispSyncSource和EventThread 完整走一遍 android 4.1一个很大的更新是Project Butter,黄油计划,为了解决用户交互体验差的问题(Jelly Bean is crazy
2016-01-24 17:40:15 4807 1
原创 android graphic(3)—surfaceflinger的启动流程
如何启动 执行流程 new SurfaceFlinger init函数 run函数 给SF发消息 SF处理消息 这篇文章只分析SF消息驱动流程的建立,不涉及具体的功能实现,关于SF和HWC如何交互后续分析,基于android 4.4,以下将surfaceflinger简称为SF。 如何启动 android 4.4中SF在init.rc中启动,如下所示:service sur
2016-01-22 10:44:25 3550
原创 android中的sp和wp
C中指针存在的问题 最近在读深入理解android内核设计思想这本书,感觉作者写作思路清晰,从设计者的角度解释了很多问题,分析问题知其然又知其所以然,把看到的一些重要思路记录下来。 C++中指针存在的问题 我们知道,java中是没有指针这个概念的,而C/C++中在使用指针的时候,如果编程不规范,会造成很多不必要的麻烦,而android的sp和wp正是为了解决这些问题而设计的
2016-01-18 22:46:40 4994
原创 android graphic(2)—EGL和OpenGL ES
Android的本地窗口 FramebufferNativeWindow Surface 前面提到android EGL库的主要作用就是将OpenGL ES和本地窗口系统结合起来。OpenGL ES就像是一个打印机,各个厂商打印机的内部实现不同(不同的OpenGL ES的实现,软件、硬件等,实现的库由EGL加载),但是只要打印的文档内容相同,按下打印键,其输出的结果都是相同的。当然打印机可以
2016-01-17 15:32:46 7588
原创 android graphic(1)—轮廓
典型图形显示过程 如何去render Canvas OpenGL ES hardware-accelerated Canvas android的封装 如何去合成 Hardware Composer android中的graphic系统是个相当庞大复杂的系统,在学习前首先心中对整个系统得有一个大概的轮廓,然后再阅读代码时就能对应轮廓的各个方面。 典型图形显示过程
2016-01-15 23:54:02 8431 3
原创 为何使用java反射机制
反射机制如何使用 android实例 android中一些代码都使用了java的反射机制,那么为什么要去使用反射机制? 反射机制如何使用 反射一般使用的方式如下,对于类A来说,假设其类名为classNameStringA,则 A a = (A)Class.forName(“classNameStringA”).newInstance(); 这和A a = new A(); 是一样的效果,那么
2016-01-07 09:57:10 2664
原创 android looper和handler
android中很多地方都能看到消息处理的代码,其实现主要借助looper和handler来完成。 在类looper的注释中,有最基础的消息处理使用方法: class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare
2016-01-06 16:12:44 569
原创 android常用同步类
原子操作android中原子操作的函数Mutex锁Autolock锁Condition variable原子操作对于CPU,最小执行单元为一条指令,单条指令在执行过程中是肯定不会打断的。 但是在两条指令之间是可以被打断的,比如中断。而原子操作就类似于单条指令,在原子操作执行期间,不会被其他外部事情打断。 例如对于++运算符, ++i; 执行这条指令大概包括三个步骤:
2016-01-06 15:02:02 892
原创 firefox火狐书签windows和ubuntu无法同步问题
装了ubuntu后发现firefox的书签没法同步,最终发现问题的原因:firefox有个全球服务和本地服务,ubuntu下的firefox默认是全球服务的,而windows下的firefox默认是本地服务的。 这样相当于两个系统下默认的存储服务器不是一个,那当然无法同步,所以可以将windows下的本地服务切换为全球服务,这样保证两者服务器相同。windows下切换全球服务的方法: 同步—>断开—
2016-01-05 22:37:49 5519 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人