1.Activity 能够单纯的理解为一个页面就是一个Activity。他与用户的交互息息相关,每一个Activity在程序中实际上是相互独立的,这样带来的好处就是,一个Activity能够被本身所在的程序调用,也能够被其余程序调用,来实现相同的功能,灵活度很高。html
2.Service 彻底与界面无关,只运行在后台,适合作一些耗时、远程链接这样的事情。他是被Activity启动并绑定绑定后可完成交互,可是又独立运行在后台的组件,当Activity中止活动,他仍旧能够继续运行。android
3.Content provider 能够把他想象成Android程序的公共数据集。当咱们使用文件系统、SQLite、网站后台来储存数据时,Content provider甚至能够容许其余程序来修改你本程序的数据。好比手机QQ用Content provider来储存联系人,它容许微信获取到联系人列表。微信
4.Broadcast receiver 是一个用来响应系统范围内的广播的组件,他与系统通知栏的通知是彻底不一样的概念。系统自己能够发起一些Broadcast receiver,好比电量低、正在充电、来电来短信等,程序也能够发起广播。一个广播能够是通知给其余程序,让其去完成相应的任务,也能够发起一个通知栏,告诉用户如今出现了一个什么样的状况。异步
Android系统设计的一个独特方面是,任何程序均可以启动其它程序的四大组件。 例如,若是你想让用户使用设备相机捕捉一个相片,有另一个程序作这件事,那么你的程序将能够调用它, 而不是你本身开发一个拍照的activity。你没必要从相机程序中嵌入代码或者连连接代码也不须要。取而代之地,你能够简单地启动相机程序中拍照的activity。 当拍照完成,相片就会返回给你的程序供你使用。从用户的角度,就好像相机就是你程序的一部分。ide
当系统启动一个组件,它其实就启动了这个程序的进程(若是这个进程还未被启动的话)并实例化这个组件所须要的类。 例如,若是你的程序启动了相机程序里的activity去拍照,这个activity其实是运行在相机程序的进程里,而不是你本身的进程。 所以,不像其它系统里的程序,Android程序并非单入口的(例如它没有main方法)。网站
因为系统把程序运行在一个个独立的进程中,并使用文件权限来限制对其它程序的访问,因此你的程序不能从其它程序中直接激活组件。 尽管如此,Android系统能够作到!激活一个其它程序的组件,你必须向系统发送一个信息,这个信息须要指定你的intent 来启动一个指定的组件。 而后系统就会为你激活这个组件。三大组件——activitie, service, 和 broadcast receiver均可被 intent异步激活。ui
激活组件的方法:设计
1.启动一个activity(或者让让它来作一些新的工做)—— startActivity(Intent) startActivityForResult(Intent) component
2.启动一个service(或者给一个正在运行的service发送新的指令)—— startService(intent) bindService(intent)htm
3.初始化一个broadcast—— sendBroadcast() sendOrderedBroadcast() sendStickyBroadcast()
4.让content provider执行一个查询操做经过调用 ContentResolver的query() 方法
参考资料:http://www.android-doc.com/guide/components/fundamentals.html