前言
今天有时间就准备整理一下Android的四大组件,有时候经常面试、技术群、朋友会聊起来四大组件,哪四大组件到底是什么,四大组件启动顺序是啥?我觉得如果面试的时候,有人问起来这个一定要注意,其实他想考察是你对四大组件的认识和理解,那么四大组件包括:Activity、Service、Broadcast Receiver、Content Provider等,那么四大组件的启动顺序,应用启动的时候会先启动哪个里,这个时候有很多可能不关心这方面,我以前也是这样,后面我是深入了解后,才知道这是很大的坑,慎重、慎重、慎重。
一、介绍
1.Activity简介
(
1
)一个
Activity
通常就是一个单独的屏幕(窗口)。
(
2
)
Activity
之间通过
Intent
进行通信。
(
3
)
android
应用中每一个
Activity
都必须要在
AndroidManifest.xml
配置文件中声明,否则系统将不识别也不执行该
Activity
。
(
4
)一个
Activity
就是一个独立业务可视化界面.也是四大组件中唯一一个可以与用户交互的组件,再有如果做过ios的话。肯定对
ViewController有一定了解,Activity跟ios很像。
(
5
)
Activity
就像MVC中的C的架构,业务逻辑独立层,Activity可以实现业务逻辑、也可以业务逻辑抽离,但都离不开活动。
2.Service简介
(
1
)service是一个服务,一个可以执行长时间任务的,并执行在后台的单元,不可去做用户交互的事情。
(
2
)
service包括两种服务方式:本地服务、远程服务。
(
3
)
service本地服务就是存在于主线程的服务,使用
bindService方式或者
startService方式,
bindService如果绑定的销毁,生命周期则被销毁。startService就是平时编写容易,
不需要去写一个binder,缺点无法跟发起者业务逻辑沟通。
(
4
)
service 远程服务是指
为独立的进程,对应进程名格式为所在包名加上你指定的and
r
oid:p
r
ocess字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,
该服务依然在运行,
不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。
3
.
B
roadcast Receiver
简介
(
1
)Receiver是什么?首先它是一个广播,为啥一个广播都独立于四大组件,哪就如现实生活当中,如果两个人,如果一个人想起来有件事要找另一个人,那么怎么办?最好打电话,而广播就相当于手机,
一个人与人之间通信,应用与应用可以通信的组件,而手机号码就是广播中的意图,可以定位找到
对方。
(
2
)
Receiver
包括两种服务方式:动态注册、静态注册。
(
3
)动态注册广播接收器特点是当用来注册的
Activity
关掉后,广播也就失效了。静态注册
无需担忧广播接收器是否被关闭
,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕
app
本身未启动,该
app
订阅的广播在触发时也会对它起作用。
4
.
C
ontent provider
简介
(
1
)
Provider
是什么?首先它是一个内容共享,为啥一个广播都独立于四大组件,这个最大的好处是两个应用数据之间共享,通过一个url就可以访问对方数据。可以通过
ContentResolver
类从该内容提供者中获取或存入数据
。
(
2
)
ContentProvider
使用
URI
来唯一标识其数据集,这里的
URI
以
content://
作为前缀,表示该数据由
ContentProvider
来管理。
(
3
)
开发人员不会直接使用
ContentProvider
类的对象,大多数是通过
ContentResolver
对象实现对
ContentProvider
的操作。
(
4
)
只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,