一.Android四大组件详解
Android四大组件分别是:activity,service,content provider,broadcast receiver.
1.activity:
1).一个应用程序一般由多个activity组成.
2).任务栈(task stack)(别名(back stack)后退栈),记录存放用户开启的activity.
3).一个应用程序被开启之后,系统就会分配一个任务栈,当所有activity都退出时,任务栈清空.
4).任务栈的id是integer型的,是自增长的,它从1开始自增长,自增长值为1.
5).activity之间通过intent进行通信.
6).app中每一个activity都必须在AndroidManifest.xml文件中进行声明,否则系统将不识别不执行该activity.
7).activity的启动模式,standard(标准启动模式),single Top(单一顶部),singletask(单一任务栈),singleInstance(单态,单例模式).
(1).standard,默认的标准启动模式:每次startActivity都是创建一个新的activity,适用于绝大多数情况.
(2).single Top,单一顶部,如果要开启的activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用onNewIntent()方法.
应用场景:浏览器书签.避免栈顶的activity被重复创建.
(3).single task,单一任务栈,activity只会在任务栈里面存在一个实例,如果要激活的activity在任务栈中已经存在,调用onNewIntent()方法,并且清空当前任务里面的所有activity,
应用场景:浏览器的activity,整个任务栈只有一个activity.
(4).singlelnstance,单态单例模式,整个手机系统中只有一个任务实例,不同的应用去打开一个activity,共享这个activity.
2.Service:
1).service用于用户在后台完成独立的操作,service分为两种,started(启动),bound(绑定):
a) Started(启动):当应用程序组件调用startService()方法时服务停止,服务处于started状态.
b) Bound(绑定): 当用用程序组件调用boundService()方法绑定服务时,服务处于绑定状态.
2).started Service(启动服务):是由其他组件调用startService()方法启动的,导致服务的onStartCommand()方法被调用.当服务处于started的状态时,其生命周期与启动它的组件无关,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止.
3).使用bindService()方法启动服务,调用的组件与服务绑定在了一起,该组件一旦退出服务也就终止.
4).开发人员需要在程序配置文件中生命全部的service,使用
5).Service通常位于后台运行,一般不与用户交互,所以Service组件没有图形用户界面.Service组件需要继承Service基类.Service组件通常为其他组件提供后台服务或者监控其他组件的运行状态.
6).长期在后台运行的组件不要在activity中开启子线程.应该是创建服务,在服务里面开启子线程.
3.Content provider:
1).android 平台提供了Content Provider 使一个程序的指定数据集提供给其他应用程序.其他应用可以通过contentResolver类从该类容中获取存入的数据.
2).当多个应用程序中共享数组时可使用该组件.例如通讯录,
3).ContentProvider实现数组共享.ContentProvider用于保存数组和获取数据,并对其所有应用程序可见.
4).ContentProvider使用URL来唯一标识其数据集.
4.Broadcast receiver:
1).广播接收器专注于广播通知信息,并作出对应事件处理的组件.
2).应用程序可以拥有任意数量的广播接收器.以对它感兴趣的所有消息作出响应.所有的接收器均继承自BroadcastReceiver基类.
3).广播接收者注册有两种方式:
a) 程序动态注册.
b) AndroidManifest.xml文件中进行静态注册.
4).动态注册的特点:activity销毁后,该广播失效.静态注册只要设备开启广播接收器就是打开的.