Andriod 的四大组件及其作用

Android 开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库。

1.活动

Android中,activity是所有程序的根本,所有程序的流程都运行在activity之中,activity可以算是开发者遇到的最频繁,也是android当中最基本的模块之一。在android的程序中,activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么activity就相当于一个网页。在activity当中可以添加一些Button、Checkbox等控件,可以看到activity概念和网页的概念相当类似。

一般一个android应用是由多个activity组成的,这多个activity之间可以进行相互跳转。例如,按下一个Button按钮后,可能会跳转到其他的activity,与网页跳转稍微有点不一样的是,activity之间的跳转有可能返回值。例如,从activity A跳转到activity B,那么当activity B运行结束时,有可能会给activity A一个返回值。这样做在很多时候是相当方便的。

当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。可以选择性的一处一些没有必要保留的屏幕,因为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。

2.服务

Service是android系统中的一种组件,跟activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service是没有界面长生命周期的代码。Service是一种程序,可以运行很长时间的,但是却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这时如果想上网,那么打开Android浏览器,这时虽然已经进入浏览器这个程序,但是歌曲播放并没有停止,而是在后台继续一首接一首的播放,其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Service也可以停止。例如,当播放列表里的歌曲都结束,或用户按下了停止音乐播放的快捷键等。Service可以在很多场合的应用中使用,如播放多媒体时用户启动了其他Activity,这时程序要在后台继续播放,比如检测SD卡上文件的变化,或在后台记录地理信息位置的改变等,而服务却藏在后台。

开启Service有两种方式:

(1)Context.starService():Service会经历onCreat  ——>onStar(如果Service还没有运行,则Android先调用onCreat(),然后调用onStar(),所以一个Service的onStar方能会重复调用多次);如果是调用者自己直接退出而没有调用StopService,服务会一直在后台运行。该服务的调用者再启动起来后可以通过stopService关闭服务。注意,多次调用Context.starService()不会被嵌套(即使会有相应的onStar()方法被调用),所以无论同一个服务被启动多少次,一旦调用Context.stopService()或者StopSelf(),都会被停止。

说明:传递给starService()的Intent对象会传递给onStar()方法。调用顺序为onCreat——onStar(可调用多次)——onDestroy.

(2)Context.bindService():服务会经历onCreate()——onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到服务运行的状态或其他操作。这个时候把调用者(Context,如Activity)会和服务绑定在一起,Context退出了,服务就会调用onUnbind——onDestroy相应退出,所谓绑定在一起就是“共存亡”了。

3.广播接收器

在Android中,广播是一种广泛运用的在应用程序之间传输信息的机制。而广播接收器是对发送出来的广播进行过滤接受并响应的一类组件。可以使用广播接收器来让应用对一个外部时间做出响应。例如,当电话呼入这个外部事件到来时,可以利用广播接收器进行处理。当下载一个程序成功完成时,仍然可以利用广播接收器进行处理。广播接收器不NotificationManager来通知用户这些事情发生了。广播接收器既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceive()进行注册。只要是注册了,当事件来临时,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast()将它们自己的Intent广播给其他应用程序。

4.内容提供者

内容提供者(Content Provider)是Android提供的第三方应用数据的访问方案。

在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。Android当然不会真的把每一个应用都做成一座“孤岛”,它为所有应用都准备可一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生Content Provider类,封装成一枚Content Provider。每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。所有应用看着像REST的样子,但实际上它比REST更为灵活。和REST类似,uri也可以有两种类型,一种是带id的;另一种是列表的,但实现者不需要按照这个模式来做,给id的uri也可以返回列表类型的数据。

Android四大组件及其作用相关推荐

  1. android四大组件的作用简书,Android四大组件是什么

    Android四大组件是:活动.服务.广播接收器.内容提供商.它们的英文名称是ACTIVITY.SERVICE.BroadcastReceiver.Content Provider.四个组件分别起到不 ...

  2. Android——四大组件、六大布局、五大存储

    一.android四大组件 (一)android四大组件详解 Android四大组件分别为activity.service.content provider.broadcast receiver. 1 ...

  3. Android四大组件---BroadcastReceiver

    前言: BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于B ...

  4. android的四大组件及使用场景,Android/四大组件/Activity.md · BoraxZYF/AndroidInterview - Gitee.com...

    ## 四大组件 ## Activity ### Activity 的四种启动模式及使用场景 - standard 标准模式,Activity 的默认启动模式.每次启动一个 Activity 时都会创建 ...

  5. android四大组件小整

    原文来自http://www.jianshu.com/p/478a34af17df 所谓的android四大组件一次是Activity.Service.BroadcastReceiver和Conten ...

  6. android java service_[Java教程]Android四大组件之Service浅见

    [Java教程]Android四大组件之Service浅见 0 2014-04-04 18:00:28 Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行.还有一个作用是 ...

  7. Android添加手机黑名单,手机来电拦截实现详解与Demo,一个不错的练手项目,涵盖Android四大组件。

    简介 这是一个小应用的详解,这个应用可以添加手机黑名单,拦截手机黑名单的来电.通过这个小demo,我们可以对Android四大组件的应用场景有个具体的了解,可以说是一个不错的练手项目. 下面给出下载地 ...

  8. Android四大组件和启动模式(面试总结)

    一.Android四大组件详解 Android四大组件分别为Activity.Service.Content Provider.Broadcast Receiver. 1.Activity (1)一个 ...

  9. Android四大组件之Activity(第一篇-简单使用)

    Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...

最新文章

  1. python 字符编码
  2. Java LinkedList指南
  3. OS / 5 种 IO 模型
  4. 有指针为何还要STL迭代器
  5. oracle 12 if,Oracle 12.1 RAC 系列 – 配置第二个网络和相应的SCAN2
  6. 学习笔记--asp.net页生命周期(转自msdn,仅为自己学习存储和有意读者使用)
  7. 2. Spring Boot项目启动原理初探
  8. Oracle 过程(Procedure)、函数(Function)、包(Package)、触发器(Trigger)
  9. struct termios结构体详解
  10. STM32用于PWM占空比测量
  11. 双击桌面计算机打不开硬盘,双击硬盘盘符打不开只能右键打开的解决方法 -电脑资料...
  12. 便捷开票二维码应用规范中的那些坑
  13. 钉钉如何调整组织架构_钉钉组织架构与员工同步指南
  14. 学习系列--最优学习内容选择
  15. 达人评测 i9 13900H和i7 13700h差距 i913900H和i713700h选哪个
  16. 华为p10 android几,是运行速度最快的安卓手机? 华为P10
  17. 求救帮忙看看飞思卡尔的代码错误
  18. arp断网攻击解决办法
  19. 【NetWorkX实例(4)】Football数据集
  20. AcWing4310. 树的DFS(dfs序列)

热门文章

  1. 查找学校是北大的学生信息
  2. visio第一次作业
  3. gurobi证书过期了怎么办
  4. 2021年信息学部物联网工程学院学生科协第二次硬件大培训
  5. 使用c++实现学生成绩管理系统
  6. 八、 以太坊的杰出之作:智能合约
  7. 力软lrselect下拉框默认选择
  8. xxl-job调度中心基本配置使用
  9. 我为什么要做富文本编辑器【wangEditor5总结】
  10. 报警c语言程序,单片机C语言程序设计:报警与旋转灯