Android6_大致了解4大组件
一、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大组件的更多相关文章
- JavaWeb各大组件生命周期
JavaWeb各大组件生命周期 servlet生命周期 服务器打开:在第一次请求时实例化与初始化:然后进行服务:最后服务器关闭销毁 Cookie生命周期:存储在客户端 如果不设置过期时间,则表示这个c ...
- 【串线篇】SpringMVC九大组件
SpringMVC中的Servlet一共有三个层次,分别是HttpServletBean.FrameworkServlet和 DispatcherServlet. HttpServletBean直接继 ...
- Spring核心原理分析之MVC九大组件(1)
本文节选自<Spring 5核心原理> 1 什么是Spring MVC Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 S ...
- vue-lazy-render: 延迟渲染大组件,增强页面切换流畅度
最近用element来做项目,在开发的过程中,突然发现页面的操作和切换在数据量大的时候相当卡,后来提了个issue,在furybean解答后才知道,我每个单元格都加了tooltip,会生成大量的节点, ...
- Android的5大组件
1. Activity组件 Activity组件通常的表现形式是一个单独的界面(screen).每个Activity都是一个单独的类,它扩展实现了Activity基础类.这个类显示为一个由Views组 ...
- bootstrap multiselect两大组件
组件说明以及API 1.第一个组件——multiple-select.这个组件风格简单.文档全.功能强大.但是觉得它选中的效果不太好.关于它的效果展示,我们放在后面. 2.第二个组件——bootstr ...
- android学习日记19--四大组件之Services(服务)
一个Android应用主要由四个基本组件组成,Android四大基本组件分别是Activity,Content Provider内容提供者,Service服务,BroadcastReceiver广播接 ...
- openstack 5大组件之间的关系和基本架构思维导图
云计算是一种按使用量付费的模式,这种模式提供可用的/便捷的/按需的网络访问,进入可配置的计算资源共享池(资源包括网络/服务器/存储/应用软件和服务),这些资源能够被快速提供,只需投入很少的管理工作或与 ...
- Spring Cloud 5大组件
服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring C ...
随机推荐
- SharePoint开发中怎样使用Visual Studio给你的Web Part加入图标
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012025054/article/details/36051545 SharePoint开发中怎样 ...
- 基于日志服务的GrowthHacking(1):数据埋点和采集(APP、Web、邮件、短信、二维码埋点技术)
数据质量决定运营分析的质量 在上文中,我们介绍了GrowthHacking的整体架构,其中数据采集是整个数据分析的基础,只有有了数据,才能进行有价值的分析:只有高质量的数据,才能驱动高质量的运营分析. ...
- MAYA安装失败怎样卸载重新安装MAYA,解决MAYA安装失败的方法总结
技术帖:MAYA没有按照正确方式卸载,导致MAYA安装失败.楼主也查过网上关于如何解决MAYA安装失败的一些文章,是说删除几个MAYA文件和MAYA软件注册表就可以解决MAYA安装失败的问题,实际的情 ...
- HZOJ Weed
作者的题解: 如果一段操作被执行,会对整个栈有什么影响呢? 把栈弹出若干个数后再插入若干个数. 线段树: 每个点纪录三个值:执行完这段操作后会删多少个,再插多少个,插的和一共是多少. 合并值时再用一个 ...
- python MySQLdb用法,python中cursor操作数据库(转)
数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_N ...
- D - Denouncing Mafia DFS
这道题其实很简单,求k个到根的链,使得链上的节点的个数尽可能多,如果节点被计算过了,就不能再被计算了,其实我们发现,只要k>=叶子节点,那么肯定是全部,所以我们考虑所有的叶子节点,DFS到根节点 ...
- 模板—插头dp(Ural 1519 Formula 1)
括号表示法: 据说比下一个要快而且灵活. #include<iostream> #include<cstring> #include<cstdio> #define ...
- Shell 基本运算符 1
Shell 和其他编程语言一样,支持多种运算符,包括: 算术运算符 关系运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr ...
- Project Euler Problem 26-Reciprocal cycles
看样子,51nod 1035 最长的循环节 这道题应该是从pe搬过去的. 详解见论文的(二)那部分:http://web.math.sinica.edu.tw/math_media/d253/2531 ...
- 检查进程启动情况,开始时间、启动时间、启动进程数、进程数是否正确、PID
#!/bin/sh bin=$(cd ``;pwd) cd ${bin} ### 定义检查函数 chk(){ programName=$ correctNum=$ programSubName=$ # ...