Android的面向组件开发

面向组件思想是在软件规模扩大,复杂度上升的背景下,以面向对象为基础而提出的一种软件设计思想。可以把它理解为一种更粗粒度的面向对象,其粒度一般大于对象,但具体要到什么程度,又可以根据实际情况来决定。这种思想以组件为基础,强调“服务”的概念。

面向组件具有以下特点:

低耦合性:组件之间一般互不依赖,一个组件只需要知道另一个组件的“名字”就可以访问它;

高重用性:系统级的重用;

高互操作性:不同的开发商开发出来的组件只要定义好了接口就可以互相访问;

进程的透明性:组件可以工作在同一个进程也可以工作在不同的进程;

语言和开发环境的独立性:组件只需要定义好服务接口,内部实现可以采用任何语言。


面向组件的框架已经有很多了,如JavaBean、EJB、COM等。Android系统并没有声称自己是面向组件的,但从其设计思想来看,Android一开始的设计考虑就是要采用一种“无边界”的设计方式,要实现系统内资源高度的重用。

 

事实上,Android完全符合面向组件的特征。首先,Android提供了Activity、Service、BroadcastReceiver和ContentProvider四大组件。这四大组件之间的协作是通过Binder机制来协作的,其中ServiceManager与ActivityManagerService是保证组件间协同工作的最重要的基础,同时它们本身也是一种组件。ServiceManager是Binder的守护进程,用来管理各种服务,并向调用这些服务的客户提供查询远程接口的功能。而ActivityManagerService负责所有Activity和Service的启动,另外还负责系统中所有广播的注册和发布以及把广播发送给接收者。


有了这个机制,Android各个组件之间实现了低耦合,Activity与Activity、Activity与Service、Service与Service之间的都只需知道对方的“名字”就可以访问它。而且,它们之间的重用是系统级的,尤其是Service,任何部署在系统里的Service可以为任何一个应用,任何一个进程,任何一个组件来提供服务。它也满足高互操作性,任何开发者开发出来的组件,只要公布其接口就可以为其他开发者所用。Android对进程完全透明,取而代之的,在Android里,一般用Task的概念来作为应用的边界,一个Task可以是单个进程也可以是多个进程。Activity与Service的协作既可以在同一个进程又可以在不同进程完成。如,启动Activity的startActivity函数,如果新Activity配置了android:process这个属性,那么,它就会运行在另一个进程中,否则运行在同一进程中。而启动Service的方式有两种,如下:

startService:运行在不同进程;

bindService:运行在统一进程。

启动过程都是通过binder机制来通知ActivitManagerService来决定是否要新建一个进程,并启动新的Activity或Service。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值