Android四大组件中每个组件的作用是什么?它们都可以开启多进程吗?
Activity:
Activity是和用户直接交互的界面,相对于其他三个地方也是用户最直观了解应用的地方,通过Intent启动,分为隐式和显式Intent,还有几种启动模式:standard、SingleTop、SingleTask、SingleInstance(standard模式下,被调用的Activity会进入调用者的activity中,所以如果使用ApplicationContent调用Activity会报异常,因为ApplicationContent没有任务栈)
Service:
Service和Activity同样都是继承子Context,但是除了直观上的界面不一样外,两者的启动状态也不一样,service除了可以直接startService外还可以bindService;另外Service虽然是处在后台状态,但是本身还是运行在主线程中的,所以耗时操作的时候还要开启子线程防止ANR
BroadcastReceiver:
消息型组件,用于组件与组件,应用与应用之间的消息传递,同样的BroadcastReceiver无法被用户感知,注册BroadcastReceiver有两种方式:静态注册和动态注册。静态注册就是在清单文件中声明,应用在安装的时候就会被系统解析,所以不用启动应用就能监听广播,动态注册需要用代码注册,当应用启动后才监听广播,不使用的时候解绑BroadcastReceiver
ContentProvider:
数据共享型组件,用于组件与组件,应用与应用之间的数据共享。它的内部其实是对数据的增删查改操作,内部维护了一个数据集合,可以是数据库也可以是list、map,但是在增删查改的时候要处理好现场同步
四大组件都可以开启多进程,在清单文件中添加android:process="xxxx"
,其中进程名可以为任意字符串