前言
今天有时间就准备整理一下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 远程服务是指为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。
3.Broadcast Receiver简介
(1)Receiver是什么?首先它是一个广播,为啥一个广播都独立于四大组件,哪就如现实生活当中,如果两个人,如果一个人想起来有件事要找另一个人,那么怎么办?最好打电话,而广播就相当于手机,一个人与人之间通信,应用与应用可以通信的组件,而手机号码就是广播中的意图,可以定位找到
对方。
(2)Receiver包括两种服务方式:动态注册、静态注册。
(3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。
4.Content provider简介
(1)Provider是什么?首先它是一个内容共享,为啥一个广播都独立于四大组件,这个最大的好处是两个应用数据之间共享,通过一个url就可以访问对方数据。可以通过ContentResolver类从该内容提供者中获取或存入数据。
(2)ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。
(3)开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
(4)只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。