Android四大组件学习,android四大组件分别为activity、service、content provider、broadcast receiver。
activity组件
- activity组件,作为用户交互的页面,都是独立的页面,需要在activity.xml中注册
- activity连个组建通信,就说页面跳转,需要通过Intent来实现页面跳转
service组件
- service组件通常作为后台运行服务,不需要与用户交互,所以也不需要页面UI
-
使用时需要在配置文件中,使用
标签,进行声明 - service组件分为两种状态:
- started 启动
- bound 绑定
-
两者之间的区别是:
绑定:调用着会与服务进程一块退出,调用着退出了,服务也就退出了,是不求同年同月生,只求同年同时死
启动:其他组件调用服务,他的生命周期与组件无关,就会一直存在后台,即使组件服务已经销毁,所以需要服务完成后, 调用方法停止
content provider组件
- 作用于各个应用程序间的数据共享和传递,统一数据访问方式
- ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见
- 一般不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作
- ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,类似http://
broadcast receiver
- 广播接收着,会对感兴趣的外部事件过滤,当满足要求时进行处理,他没有页面UI;可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户
- 通知可以使用很多方式来吸引用户
- 广播接收着分为两种注册:动态注册和静态注册
- 动态注册的特点是当用来注册的Activity关掉后,广播也就失效了;而静态则不会,静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的
四大组件
- 4大基本组件都需要注册才能使用,每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置。而broadcast receiver广播接收者的注册分静态注册(在AndroidManifest文件中进行配置)和通过代码动态创建并以调用Context.registerReceiver()的方式注册至系统
- 内容提供者的激活:当接收到ContentResolver发出的请求后,内容提供者被激活。而其它三种组件activity、服务和广播接收器被一种叫做intent的异步消息所激活。
- 内容提供者仅在响应ContentResolver提出请求的时候激活。而一个广播接收器仅在响应广播信息的时候激活。所以,没有必要去显式的关闭这些组件。Activity关闭:可以通过调用它的finish()方法来关闭一个activity。服务关闭:对于通过startService()方法启动的服务要调用Context.stopService()方法关闭服务,使用bindService()方法启动的服务要调用Contex.unbindService()方法关闭服务。
- android中的任务(activity栈),任务中的所有activity是作为一个整体进行移动的。整个的任务(即activity栈)可以移到前台,或退至后台。