Activity是一种展现型组件,具备两种启动方式:ide
在实现Activity时,须要继承Activity抽象类,并重写onCreate()方法,于是Activity具备启动和中止概念。线程
Service是一种计算型组件,其生命周期是嵌套在主线程的。xml
Service有两种启动模式继承
注意:在AndroidManifest.xml中注册Service时,只须要注册服务的类名便可。生命周期
启动状态和绑定状态的区别在于:get
启动以后,Service的动做不受Activity的控制(startService)域名
绑定以后,Service的动做是由Activity控制的(bindService)it
在实现Service时,须要继承Service抽象类,并重写onBind()方法,于是Service也具备启动和中止的概念。ast
BroadcastReceiver是一种消息型组件。因为BroadcastReceiver能够在不一样的组件甚至不一样的应用之间传递消息,因此其能够脱离Activity实现,除了要在AndroidManifest.xml中注册广播类名外,还须要添加IntentFilter,这样就可让Receiver选择性的接受广播。当注册完成后,及时没有Activity启动,也能够接受广播。date
在实现BroadcastReceiver时,须要继承BroadcastReceiver抽象类,可是不须要重写onCreate()方法,只要重写onReceive()方法便可。所以BroadcastReceiver没有启动和中止的概念,更像是一个系统级的监听器。
ContentProvider是一种数据共享性组件,能够在应用之间共享数据,因此与BroadcastReceiver同样,其能够脱离Activity实现。在实现ContentProvider时,须要继承ContentProvider抽象类,而后在AndroidManifest.xml中注册类名和ContentProvider的域名。
该类须要重写六个方法,即onCreate(),query(),insert(),update(),delete(),getType()
与前三个组件不一样,ContentProvider没有使用intent,而是使用URI来判断可否为ContentResolver提供数据共享。