Android四大组件详解
来源:互联网 发布:拜年视频制作软件 编辑:程序博客网 时间:2024/06/15 20:34
Android四大组件分别是:Activity,Service(服务),BroadcastReceiver(广播接收器),ContentProvider(内容提供者).
一.Activity:
Activity就是应用程序的一个界面,直接与用户交互并且接收用户操作去做出相应的响应.
Activity之间通过Intent进行通信.
使用Activity之前必须要在AndroidManifest.xml中进行注册,否则使用的话程序会不识别该Activity.
所有的运行的Activity都是保存在Activity栈里,Activity栈是由后进先出的规则,当你进入一个Activity,就把该Activity加入到栈顶,当你返回时就是把栈顶的Activity弹出.
Activity的加载模式有4种分别是: standard,singleTop,singleTask,singleInstance.加载模式可以在AndroidManifest.xml中的Activity节点设置launchMode.
standard模式:没设置的话默认就是standard,该模式就是每运行一个Activity就会产生一个新的实例.
singleTop模式:如果跳转一个Activity,栈顶已经存在这个Activity的实例的话,就会调用onNewIntent()不会重新创建实例.(栈顶就是你刚才操作的页面,比如A页面->B页面->C页面->C页面,这种情况就会调用C页面的onNewIntent(), 如果是A页面->B页面->C页面->B页面的话,这种情况还是再次创建B页面的实例.)
singleTask模式:这个模式下跟singleTask差不多,不过这个模式比较开放,Activity栈里只允许存在一个实例,就是跳转一个Activity,如果在Activity栈里已经有了该实例,那么就调用onNewIntent()不会重新创建实例.
singleInstance模式:这个模式用的很少,比较霸道,在这个模式下的Activity的Task中,不允许有其他实例了.
Acitivty的生命周期:
光看图片有点蒙可能,举例说明:
进入应用启动aActivity那么会依次调用onCreate()->onStart()->onResume() 那么现在aActivity现在就是正在运行状态,如果接收用户点击跳转到bActivity,那么会先调用aActivity的onPause()方法暂停,然后bActivity再依次调用onCreate()->onStart()->onResume() ,之后会调用onSaveInstanceState() (注:这个方法不在生命周期里,只是在Activity可能 会被系统杀死时,为了不让程序出现错误保存当前的状态,也就是使用Bundle保存重要变量,如果被杀死,再次返回时候 再次调用onCreate(Bundle),可以使用参数取出保存的状态) , 之后会调用aActivity的onStop()方法,这时如果用户点击返回,会先调用bActivitiy的onPause(),然后调用aActivity的onRestart()->onStart()->onResume(),然后调用bActivity的onStop()->onDestroy()方法销毁bActivity.
二.Service:
字面意思是指服务,说白了就是一个没有界面的Activity,相当于后勤,是在后台完成某种指定操作.
Service的启动方式有两种:
startService(开始服务):组件调用startService().
bindService(绑定服务):组件掉用bindService().
那么两种方式的区别是:
start: 组件掉用startService(),这时service会调用onStartCommand(),当service启动后,他的生命周期和启动它的组件就没有关系了,是自生自灭自己做事情,可以一直在后台运行下去,除非自己执行完任务自杀(在service里面调用stopSelf()),或者被杀(组件掉用stopService()).
bind:组件掉用bindService(),会返回给调用者一个IBind接口,调用者可以通过这个接口调用Service里面的方法,也就是调用者命令Service做什么事情,这是给调用者和Service牵上了红线,只要调用者GG了,那么Service也得殉情GG.
Service使用必须要在AndroidManifest.xml中注册使用(例如<service name="xx.xxx.xxx.MyService"></service>).
Service的生命周期是:
通过startService启动的是onCreate()->onStartCommand()->Service运行
销毁则是调用stopService()时 ->onDestroy().
通过bindService启动是 onCreate()->onBind()->Service运行
调用者GG以后 onUnBind()->onDestroy.
三.BroadcastReceiver.
用于接收广播,也就是你想要监听的东西比如说网络的连接成功啊,来电话了啊,开机了啊,还可以自定义,然后发送广播啊...等等.
广播分为2类:一种是正常广播(sendBroadcast()),是完全异步的,就像赛跑一样,谁跑的快谁先接收.第二种是有序广播(sendOrderedBroadcast),有序就是有顺序的就像买票一样,我买完你再买,也可以我买完关门,就是receiver执行完之后终止传播,receiver运行顺序可以通过intent-filter里面的priority来控制,如果priority相同时,就抢吧.
BroadcastReceiver生命周期就是onReceive方法,函数执行完就GG. BroadcastReceiver不能执行耗时操作他只存在10秒,而且他没有提供任何界面来显示广播信息,一般都是使用NotificationManager来发送通知并且震动.
广播注册的方式也有两种:
1.代码动态注册:context.registerReceiver()这样注册要在组件销毁时调用unRegisterReceiver()解除.
2.配置文件AndroidManifest.xml注册: 这种的会随系统的启动而活跃,只要接受到广播就会触发,就算程序没运行.
四.ContentProvider.
主要用于数据的共享.通过他把数据提供给别的应用程序使用,Android中有些系统的ContentProvider例如联系人,图库等.
主要使用方法是.
提供者实现ContentProvider去实现增删改查
接收者实现ContentResolver去调用Provider提供的数据
调用时是使用Uri来定位,使用content://开头,以表示数据是由ContentProvider来管理的,没怎么使用过,就用来获取了图库什么的.
四大组件就到这里,都是理论,具体还是要在代码里面自己领悟,用多了就理解了.
- Android四大组件详解
- android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android 四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- Android四大组件详解
- android四大组件详解
- Android四大组件详解
- Java的第一个坑,多线程入门
- 一个子系统的配置
- MySQL 体系架构 Oracle体系架构 PostgreSQL体系架构
- C#(KeyChar)键值对照表
- 计算机等级考试--四级网络工程师1
- Android四大组件详解
- 干货 | 台大“一天搞懂深度学习”课程PPT(下载方式见文末!!)
- okhttp的https的使用
- Mysql同步数据案列
- Python----__len__可以用len()函数返回对象实例的“长度”
- RMAN-06025
- 如何打造千万级Feed流系统
- JS中AOP的实现和运用
- PREV-5 错误票据