四大组件的做用(面试问到过)

1、Activity

Activity是一种展现型组件,具备两种启动方式:ide

  • 显示启动,经过Intent实现
  • 隐式启动,也须要Intent,但还须要在AndroidManifest.xml中添加IntentFilter。

在实现Activity时,须要继承Activity抽象类,并重写onCreate()方法,于是Activity具备启动和中止概念。线程


2、Service

Service是一种计算型组件,其生命周期是嵌套在主线程的。xml

Service有两种启动模式继承

  • 启动状态
  • 绑定状态

注意:在AndroidManifest.xml中注册Service时,只须要注册服务的类名便可。生命周期

启动状态和绑定状态的区别在于:get

启动以后,Service的动做不受Activity的控制(startService)域名

绑定以后,Service的动做是由Activity控制的(bindService)it

在实现Service时,须要继承Service抽象类,并重写onBind()方法,于是Service也具备启动和中止的概念。ast


3、BroadcastReceiver

BroadcastReceiver是一种消息型组件。因为BroadcastReceiver能够在不一样的组件甚至不一样的应用之间传递消息,因此其能够脱离Activity实现,除了要在AndroidManifest.xml中注册广播类名外,还须要添加IntentFilter,这样就可让Receiver选择性的接受广播。当注册完成后,及时没有Activity启动,也能够接受广播。date

在实现BroadcastReceiver时,须要继承BroadcastReceiver抽象类,可是不须要重写onCreate()方法,只要重写onReceive()方法便可。所以BroadcastReceiver没有启动和中止的概念,更像是一个系统级的监听器。


4、ContentProvider

ContentProvider是一种数据共享性组件,能够在应用之间共享数据,因此与BroadcastReceiver同样,其能够脱离Activity实现。在实现ContentProvider时,须要继承ContentProvider抽象类,而后在AndroidManifest.xml中注册类名和ContentProvider的域名。

该类须要重写六个方法,即onCreate(),query(),insert(),update(),delete(),getType()

与前三个组件不一样,ContentProvider没有使用intent,而是使用URI来判断可否为ContentResolver提供数据共享。


总结:

  1. Activity和Service有生命周期,而BroadcastReceiver与ContentProvider采用监听机制,没有生命周期
  2. 四大组件都须要在AndroidManifest.xml中注册
  3. 除了ContentProvider外,其余组件都要用到intent
  4. 四大组件实现时都要继承其抽象的父类
  5. Service与Activity关系最为密切,BroadcastReceiver和ContentProvider的实现基本不依赖与Activity。
相关文章
相关标签/搜索