移动平台中的模块复用

13 篇文章 0 订阅
 

在“复用”这一角度,无疑android是最棒的,至少到目前尚无平台可以出其右。 当然,我相信android的思想也不是一蹴而就的,也是借鉴并发展了前人的思想。 我们慢慢看来:

 

 

1. 首先,在Windows等PC平台上,最常见的复用的粒度 是基于 “进程”的复用, 进程的边界是很清晰的。 客户可以显示的复用其他的进程来完成某个功能,比如带命令参数启动一个新的应用程序来完成某件事情,但是,这种模式下,需要熟知你所以欲复用的进程/应用程序的Name以及参数。  另外,也可以隐式的复用,这通常是基于系统的注册,查询功能而实现的。 比如文件后缀。 某些应用程序注册某些文件后缀。 客户程序可以隐式的打开一个文件,此时,系统将自动的查询到该文件类型关联的程序,并启动之。

 

 

2. 在BMP/BREW平台中的复用,是基于逻辑上的Application,因为在BREW/BMP中,application基本上都运行在单一的进程中的单一的线程。 BREW中使用ISHELL_POST/SendURL的方式来隐式的在运行时进行应用级的复用。这里的URL的前缀其实就是Scheme。比如tel,mail,http,file等。 相应的application注册该scheme申明自己有处理该scheme的能力,并且对URL的语义进行定义。 运行时,客户程序可以直接基于PostSendURL的方式向系统抛出一个复用的请求。系统会自动查询得到对应的application,并将其Launch然后投递事件,事件中包含完整的URL。

 

   这里,我们看看BREW/BMP中这种复用的局限性:

 

    1. 只能基于Application Level的复用,粒度仍然太大

    2. 基于URL,可带的信息太少

    3. 框架不支持结果的返回

 

 

 

3. Android发展了上诉的思想,将优点继承,缺点弥补,我们来看看:

 

    在Android中,进程,应用的边界完全模糊化了,只有组件的边界那么清晰,这是应用,Google希望我们基于组件编程。

 

    之所以可以进行基于组件边界,而不需要关心进程,应用的概念,这是应用,android中的运行时复用的粒度被缩小到了组件的级别,这是一个飞跃!!

 

    任何组件间都可以复用,而不仅仅是UI组件,包括Service也可以复用,这又是一个飞跃。

 

    复用其实仍然基于注册和查询,但是为了能带更多的信息,Google不像BREW那样仅仅使用一个URL,而是直接使用一个Intent对象,对象可以带的信息足够多了吧。 将组件的能力抽象成Action,Data , URL, MIME Type, Extra等并封装在Intent内部。

 

    复用是可以带Result的,这又是一个飞跃。

 

    复用是可以跨进程的,并对客户隐藏细节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值