Chinaunix首页 | 论坛 | 博客
  • 博客访问: 276948
  • 博文数量: 95
  • 博客积分: 2047
  • 博客等级: 大尉
  • 技术积分: 1022
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 16:18
文章分类

全部博文(95)

文章存档

2013年(1)

2011年(94)

我的朋友

分类: 嵌入式

2011-08-23 23:00:18

昨天培训结束后赶飞机,走的很匆忙,没来得及和Jollen好好聊聊。稍微记录点心得体会:

1)课上提了一个加速APP启动的idea:可以用类似cache的方法将解释过的bytecode保存起来。算是JIT和普通解释的折中方法,不过还没有实现。

2)Zygote是第一个被运行的Android进程(不是Linux进程,那是init)。一般只有Zygote是通过main来运行,其他Android进程都是folk Zygote来的,这样可以复用Zygote启动时preload的class库。但也有不用folk,直接dalvikvm来启动,传说HTC有高级UI就是直接启动的。

3)讲了AIDL这个自动生成Iinterface接口继承代码的工具,为啥要继承这个接口呢,因为自己的Service要定义接口。同时Service还要继承Binder类,这样Service就有了一套封装好的进程交换方法,而不用调用binder IPC的底层函数。Manager和Service通过继承Binder类提供方法来传递数据这种方式比较好,这也是一种优化Android Framework的方法吧。具体做法为通过AIDL把Service封装为Proxy Obj(继承了Binder和接口,又称分身),位于Manager进程,通过继承而来的Binder方法和Service进程(继承Proxy Obj,是实体)通讯。A系统大部分都改成这种模式,还有少数Service没改,但是很多OHA厂商自己都改了,当然是为了优化。
具体步骤:
(0)写AIDL文件
(1)写LedService.java 继承ILedservice.stub(AIDL生成的Proxy Obj)
(2)写LedManager.java 它的构造函数要拿到Proxy Obj.

4)问了几个问题
问:Android有什么好的调试方法?
答:一般就GDB、ADB,要根据情况选择。
我:我们都用printk和LOG,好可怜

问:Android的代码管理和分工协作的方法:
答:git

问:Android的2D加速怎么做?
答:每个厂商都不同,做法不一

btw:架构师真是个好职业,天天画画class图和sequence图。
阅读(895) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~