四大组件的区别与联系

       活动(Activity)、服务(Service)、广播(BroadcastReceiver)和内容提供者(Contentprovider)合称Android四大组件。其中除了Activity是以界面的形式呈现的,其他三大组件对于用户都是透明的。

       Activity是一种展示型组件,具有两种启动方式,一种是显示的,通过intent实现;另一种是隐式的,也需要intent,但还需要在AndroidManifest.xml中添加intentfilter。在实现Activity时,需要继承Activity抽象类,并且重写onCreat()方法,因此,Activity具有启动和停止的概念。

       Service是一种计算型组件,其生命是嵌套在主线程中的。Service有两种状态:启动状态和绑定状态,并且只能显示启动,因此在AndroidManifest.xml中注册Service时,只需要注册服务的类名即可。启动状态和绑定状态的区别在于:启动之后,Service的动作不受Activity的控制;而绑定之后,Service的动作是由Activity控制的。在实现Service时,需要继承Service抽象类,并且重写onCreat()方法,因此,Service也具有启动和停止的概念。

      BroadcastReceiver是一种消息型组件。由于BroadcastReceiver可以在不同的组件甚至不同的应用之间传递消息,所以其可以脱离Activity实现,除了要在AndroidManifest.xml中注册广播类名外,还需要添加intentfilter,这样就可以让receiver选择性的接收广播。当注册完成之后,即使没有Activity启动,也可以接收广播。在实现 BroadcastReceiver时,需要继承 BroadcastReceiver抽象类,但是不需要重写onCreat()方法,只需重写onReceive()方法,因此,Service没有启动和停止的概念,更像是一个系统级的监听器。

       ContentProvider是一种数据共享型组件,可以在应用之间共享数据。所以与BroadcastReceiver一样,其可以脱离Activity实现在实现ContentProvider时,需要继承ContentProvider抽象类,然后在AndroidManifest.xml中注册类名和ContentProvider的域名。同样的,不需要重写onCreat()方法,而是实现CRUD操作,所以ContentProvider没有启动和停止的概念,更像是一个系统级的监听器。与前三个组件不同的是,ContentProvider并没有使用intent,而是使用URI来判定能否为ContentResolver提供数据共享。

总结:

1.ActivityService有生命周期,而BroadcastReceiver与ContentProvider采用监听机制,没有生命周期。

2. 四大组件都需要在AndroidManifest.xml中注册。

3.除了ContentProvider外,其他组件都要用到intent。

4. 四大组件实现时都要继承其抽象的父类。

5. Service与Activity关系最为密切,BroadcastReceiver与ContentProvider的实现基本不依赖于Activity。

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值