Android系统的OS界面学习

从内核及嵌入式系统方向转到Android开发,我第一个本能的目标就是搞清楚Android是怎样封装Linux并提供一个新OS界面。

截止到目前为止,我看到如下封装:
1、每个应用对应一个进程,每个应用在未结束之前不能再启动一个实例或说进程。
2、每个进程配套一个主线程,或称UI线程,缺省情况下所有Activity等都在这个主线程内运行。
3、可以另外启动一个线程,用于一些耗时的操作。
4、每个线程,包括主线程在内,都有一个配套的消息队列,并且该消息队列配套一个looper和一个handler。也即线程、消息队列、looper和handler是一对一的绑定关系。缺省情况下looper和handler没有被初始化,可能为了节约资源。
5、消息队列里面可以放msg,也可以放runnable。线程间的消息通信机制是,线程A直接调用线程B的handler,从而把msg交给线程B的handler,该handler会把这个msg塞入线程B的消息队列。
6、intent是Activity或应用之间的通信机制,感觉比消息队列高一层,可能在跨线程的情况下会在底层调用消息机制,这是个猜测。
7、service机制跟一般桌面系统的service服务机制差不多。
8、进程间通信,或者说应用间通信使用Intent、ContentProvider、Service、BroadcastReceivers。因为进程间通信是个麻烦事情,这个封装大大简化了设计。

以上为是我最关心的OS开发界面。我看过部分书籍中的案例代码,也留意过官方的developer.android.com文档及其案例,我发现上述进程、线程、消息队列等等传统OS界面要素其实很少用到,使用较多的是Activity、Intent、Service、BroadcastReceivers、ContentProvider等,偶尔启动一个线程来异步处理费时的网络操作。我的感觉是,这个Android封装层也分为上下两层,进程、线程、消息队列等传统要素是底层,Activity、Intent、Service、ContentProvider等是上层,这个开发的层次界面显然鼓励尽量用上层,尽量避免使用底层。进一步说,Activity、Intent、Service、ContentProvider等构成了一种基于服务的新的OS界面,这种新的开发界面应该是以后OS发展的主方向。

有上述的底之后,我下一步需要整理一下嵌入式系统较少涉及的部分,即UI+view体系。顺带感想下,官方的developer.android.com非常丰富,应该是主要的阅读和学习资料。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值