Android四大组件启动顺序、生命周期详解

  • Post author:
  • Post category:其他



前言





今天有时间就准备整理一下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






只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,



版权声明:本文为Apple_hsp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。