一、Activity和View

Activity是Android应用中负责与用户交互的组件。

View是所有UI控件、容器控件的基类。View组件就是Android应用中用户实实在在看到的部分。

Activity为Android应用提供了可视化用户界面,如果该Android应用需要多个用户界面,那么这个Android应用就会包含多个Activity。

多个Activity组成Activity栈。当前活动的Activity位于栈顶。

====================================================

 二、Service

Service与Activity的地位是并列的。它也代表一个单独的Android组件。

Service与Activity的区别在于,Service通常位于后台运行,它一般不需要与用户交互。因此Service组件没有图形用户界面。

Service组件需要继承Service基类。

一个Service组件被运行起来后,它将拥有自己的独立的生命周期,Service组件通常用于为其他组件提供后台服务或者监控其他组件的运行状态。

======================================================

三、BroadcastReceiver

BroadcastReceiver是Android中另一个非常重要的组件。

故名思义,它表示广播消息接收器。

类似于事件编程中的监听器。

与普通时间监听器不同的是,普通事件监听器监听的事件源是程序中的对象;而BroadcastReceiver监听的事件源是Android应用中的其他组件。

开发者只需要实现自己的BroadcastReceiver子类即可。通过重写一些方法。另外有两种方式来注册系统级的“事件监听器”。

一种是Java代码中通过Context.registReceiver()方法注册BroadcastReceiver;

另一种是AndroidManifest.xml文件中使用<receiver.../>元素来完成注册。

====================================================

四、ContentProvider

由于Android应用各自独立地运行在自己的Dalvik虚拟机实例中。

如果这些Android应用之间需要实现实时的数据交换。

这就需要安卓系统为这种跨应用的数据交换提供一个方法:也就是ContentProvider

当用户实现自己的ContentProvider时候,需要实现一些抽象的方法。

通常要用ContentResolver来与ContentProvider来配对使用。

一个应用程序使用ContentProvider暴露自己的数据。

而另一个应用程序则使用ContentResolver来访问数据。

===================================================

五、Intent和IntentFilter

除了前面的4大组件外,还要介绍一个对于安卓应用非常重要的东西。

它是Intent,虽然不是安卓应用的组件,但是它是用来Android应用内不同组件之间通信的载体。

Intent可以启动应用中的Activity、也可以启动一个Service组件、还可以发送一条广播消息来触发系统中的BroadcastReceiver。

Activity、Service、BroadcastReceiver三种组件之间的通信都以Intent作为载体。只是不同组件使用Intent的机制略有区别而已。

使用方法是这三个组件调用各自指定的接口,但是这些接口都有一个共同的参数就是Intent。

Intent包含了要启动或触发的目标组件的信息。

这个Intent可以分成两类:

  显式Intent:明确制定需要启动或触发的组件的类名

  隐式Intent:只是指定需要启动或触发的组件应满足怎样的条件;

其中对于隐式Intent而言,Android系统需要对该Intent进行解析,解析出它的条件,然后再去系统中查找与之匹配的目标组件。如果找到符合条件的组件,就启动或触发它们。

这个功能就需要靠IntentFilter来实现了。

关于Intent和IntentFilter的详细实现机制,后续再分析。

====================================================

相关链接:

安卓——四大组件、六大布局、五大存储:https://www.cnblogs.com/DreamRecorder/p/8949384.html

安卓4大组件:https://blog.csdn.net/fjnu_se/article/details/80854205

Android6_大致了解4大组件的更多相关文章

  1. JavaWeb各大组件生命周期

    JavaWeb各大组件生命周期 servlet生命周期 服务器打开:在第一次请求时实例化与初始化:然后进行服务:最后服务器关闭销毁 Cookie生命周期:存储在客户端 如果不设置过期时间,则表示这个c ...

  2. 【串线篇】SpringMVC九大组件

    SpringMVC中的Servlet一共有三个层次,分别是HttpServletBean.FrameworkServlet和 DispatcherServlet. HttpServletBean直接继 ...

  3. Spring核心原理分析之MVC九大组件(1)

    本文节选自<Spring 5核心原理> 1 什么是Spring MVC Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 S ...

  4. vue-lazy-render: 延迟渲染大组件,增强页面切换流畅度

    最近用element来做项目,在开发的过程中,突然发现页面的操作和切换在数据量大的时候相当卡,后来提了个issue,在furybean解答后才知道,我每个单元格都加了tooltip,会生成大量的节点, ...

  5. Android的5大组件

    1. Activity组件 Activity组件通常的表现形式是一个单独的界面(screen).每个Activity都是一个单独的类,它扩展实现了Activity基础类.这个类显示为一个由Views组 ...

  6. bootstrap multiselect两大组件

    组件说明以及API 1.第一个组件——multiple-select.这个组件风格简单.文档全.功能强大.但是觉得它选中的效果不太好.关于它的效果展示,我们放在后面. 2.第二个组件——bootstr ...

  7. android学习日记19--四大组件之Services(服务)

    一个Android应用主要由四个基本组件组成,Android四大基本组件分别是Activity,Content Provider内容提供者,Service服务,BroadcastReceiver广播接 ...

  8. openstack 5大组件之间的关系和基本架构思维导图

    云计算是一种按使用量付费的模式,这种模式提供可用的/便捷的/按需的网络访问,进入可配置的计算资源共享池(资源包括网络/服务器/存储/应用软件和服务),这些资源能够被快速提供,只需投入很少的管理工作或与 ...

  9. Spring Cloud 5大组件

    服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring C ...

随机推荐

  1. 【AtCoder Regular Contest 092】C.2D Plane 2N Points【匈牙利算法】

    C.2D Plane 2N Points 题意:给定N个红点二维坐标N个蓝点二维坐标,如果红点横纵坐标都比蓝点小,那么它们能够构成一组.问最多能构成多少组. 题解:把满足要求的红蓝点连线,然后就是匈牙 ...

  2. [***]沙雕低错集(算起来因为低错挂掉的分快够我AK三场了……)

    由于沙雕错太多了所以不想写了,看着就难受…… 各种沙雕错(自从上次考试开始各种犯沙雕低错……): !!!sort是不稳定的排序,如果排序结构题只按其中一个关键字排序,那么在关键字相等时,排序多次的结果 ...

  3. 瑞星推国内唯一Linux系统杀毒软件 国产操作系统还需国产安全软件保护

    近来在IT领域最爆炸的新闻莫过于5月20日中央国家机关政府採购中心下发通知.要求中央机关採购所有计算机类产品不同意安装Windows 8.而改用国产Linux操作系统. 此消息一出,立马引起各界关注. ...

  4. ros自定义消息

    ros自定义消息可以根据自身项目需求定义和封装想要的数据类型和数据结构.具体可以参考维基百科关于ros自定义消息部分 这里我只是记录自定义消息的要点部分: 1.首先要在工作空间下功能包中创建一个msg ...

  5. Python基础:18类和实例之二

    1:绑定和非绑定 当存在一个实例时,方法才被认为是绑定到那个实例了.没有实例时方法就是未绑定的.在很多情况下,调用的都是一个绑定的方法. 调用非绑定方法并不经常用到,其中一个主要的场景是:派生一个子类 ...

  6. LOJ 10239 有趣的数列

    LOJ 10239 有趣的数列 首先可以将奇数视作入栈,偶数视作出栈,那么它是卡特兰数,其实打表也能看出来,而且好像可以用dp? 不过这道题的难点不在这里,p不是素数,所以不能用求逆元来做,不过前50 ...

  7. Project Euler Problem 26-Reciprocal cycles

    看样子,51nod 1035 最长的循环节 这道题应该是从pe搬过去的. 详解见论文的(二)那部分:http://web.math.sinica.edu.tw/math_media/d253/2531 ...

  8. oracle函数 ln(y)

    [功能]返回以e为底的y的对数(e为数学常量) [参数]y,数字型表达式 (条件y>0) [返回]数字 [示例] select exp(3),exp(-3),ln(20.0855369),ln( ...

  9. DTCC 2019 | 深度解码阿里数据库实现 数据库内核——基于HLC的分布式事务实现深度剖析

    摘要:分布式事务是分布式数据库最难攻克的技术之一,分布式事务为分布式数据库提供一致性数据访问的支持,保证全局读写原子性和隔离性,提供一体化分布式数据库的用户体验.本文主要分享分布式数据库中的时钟解决方 ...

  10. ]ubuntu开机自动挂载的ntfs硬盘的权限问题

    原文地址:ubuntu开机自动挂载的ntfs硬盘的权限问题 在linux操作系统中, 挂载是一个非常重要的功能,使用非常频繁. 它指将一个设备(通常是存储设备)挂接到一个已存在的目录上. (这个目录可 ...