一个Android应用通常由一个或多个基本组件组成,常用的一般有Activity、Service、BroadcastReceiver、ContentProvider、Intent等等。

⒈Activity和View

  Activity时Android中负责与用户进行交互的组件。Activity只能通过setContentView(View)来显示指定组件。

  View组件是所有UI控件、容器控件的基类,View组件就是Android应用中用户看到的部分。View组件需要放到容器组件中或使用Activity将它显示出来。如果需要通过某个Activity把指定的View显示出来,调用Activity的setContentView()方法即可。

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView()方法可接收一个View作为参数
//创建一个线性布局管理器
LinearLayout layout = new LinearLayout(this);
//设置该Activity显示layout
setContentView(layout);
}

  setContentView()方法也可接收一个布局管理资源的ID作为参数

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置该Activity显示activity_main.xml文件定义的View
setContentView(R.layout.activity_main);
}

  Activity为Android应用提供了可视化用户界面,如果Android应用需要多个用户界面,那么这个Android应用将会包含多个Activity,而多个Activity又组成了一个Activity栈,当前活动的Activity位于栈顶。

  实际上Activity是Window的容器,Activity包含一个getWindow()方法,该方法返回该Activity所包含的窗口。

  如果应用程序不调用Activity的setContentView()来设置该窗口的显示内容,那么该程序将显示一个空窗口。Activity包含了一个setTheme(int resid)方法来设置其窗口的风格。例如,我们希望窗口不显示ActionBar、以对话框的形式显示窗口等都可以通过该方法来实现。

⒉Service

  Service与Activity的地位是并列的,它也代表一个单独的Android组件。Service与Activity的区别在于:Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形界面。

  与Activity组件需要继承Activity基类相似,Service组件需要继承Service基类。一个Service组件被运行起来之后,它将拥有自己独立的生命周期,Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

⒊BroadcastReceiver

  BroadcastReceiver指Android中的广播消息接收器,BroadcastReceiver类似于事件编程中的监听器。与普通事件监听器不同的是,普通事件监听器监听的事件源是程序中的对象,而BroadcastReceiver监听的事件源是Android中的其他组件,因此BroadcastReceiver相当于一个全局的事件监听器。

  使用BroadcastReceiver组件接收广播消息比较简单,只需要继承BroadcastReceiver抽象类并重写onReceive(Context context,Intent intent)方法即可。当其他组件通过sendBroadcast()、sendStickyBroadcast()或sendOrderedBroadcast()方法发送广播消息时,如果该BroadcastReceiver也对该消息“感兴趣”(通过IntentFilter设置),BroadcastReceiver的onReceive(Context context,Intent intent)方法将会被触发。

  开发者实现了自己的BroadcastReceiver之后,通常由两种方式来注册这个系统级的“事件监听器”

    1.在Java或Kotlin代码中通过Context.registReceiver()方法注册BroadcastReceiver

    2.在AndroidManifest.xml文件中使用<receiver>元素进行注册

⒋ContentProvider

  Android通过ContentProvider组件在多个应用程序之间进行数据交换。

  实现方式是继承ContentProvider抽象类并重写以下抽象方法:

    1.insert(Uri,ContentValuts):向ContentProvider插入数据

    2.delete(Uri,ContentValuts):删除ContentProvider中指定数据

    3.update(Uri,ContentValuts,String,String[]):更新ContentProvider中指定数据

    4.query(Uri,String[],String,String[],String):从ContentProvider中查询数据

  通常与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,而另一个程序则通过ContentResolver来访问数据。

⒌Intent和IntentFilter

  Intent并不是Android应用的组件,它是Android应用内不同组件之间通信的载体。当Android运行时需要连接不同的组件时,通常就需要借助于Intent来实现。

  Intent可以启动应用中的另一个Activity,也可以启动一个Service组件,还可以发送一条广播消息来触发系统中的BroadcastReceiver。也就是说,Activity、Service、BroadcastReceiver三种组件之间的通信都以Intent作为载体,只是不同组件使用Intent的机制略有区别而已。

    1.Activity:当需要启动一个Activity时,可嗲用Context的startActivity(Intent intent)或startActivityForResult(Intent intent,int requestCode)方法,这两个方法中的Intent参数封装了需要启动的目标Activity信息。

    2.Service:当需要启动一个Service时,可调用Context的startService(Intent intent)或bindService(Intent service,ServiceConnection conn,int flags)方法,这两个方法中的Intent参数封装了需要启动的目标Service信息

    3.BroadcastReceiver:当需要触发一个BroadcastReceiver时,可调用Context的sendBroadcast(Intent intent)、sendStickyBroadcast(Intent intent)或sendOrderedBroadcast(Intent intent,String receiverPermission)方法来发送广播消息,这三个方法中的Intent参数封装了需要触发目标BroadcastReceiver的信息。

  Intent封装了当前组件需要启动或触发的目标组件的信息,当一个组件通过Intent表示了启动或触发另一个组件的“意图”之后,这个意图可分为两类

    1.显式Intent:显式Intent明确指定了需要启动或者触发的组件类名。

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

  对于显式Intent而言,Android系统无须对该Intent做任何解析,系统直接找到指定的目标组件启动或触发它即可。

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

  Android通过IntentFilter来判断被调用组件是否符合隐式Intent的条件,被调用组件可通过IntentFilter来声明自己所满足的条件(也就是声明自己到底能处理那些隐式Intent)。

Android Application的基本组件介绍的更多相关文章

  1. Android应用的基本组件介绍和签名Android应用程序

    一.Android应用的基本组件介绍  Activity和View :Activity只能通过setContentView(View)来显示指定的组件.View组件是所有UI控件.容器控件的基类,Vi ...

  2. android Application类的详细介绍(转)

    在代码中经常看到application这个类,一直不知道这个是干什么用的,今天刚好有点时间,所以进行了详细的学习. 一.先对它的整体概念解释: 在android源码中对他的描述是; * Base cl ...

  3. 17.(转) Android之四大基本组件介绍与生命周期

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  4. android拾遗——四大基本组件介绍与生命周期

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  5. Android四大基本组件介绍与生命周期

    Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...

  6. Android官方架构组件介绍之LifeCycle

    Google 2017 I/O开发者大会于近日召开,在开发者大会上谷歌除了发布了Android O等一些新产品之外,也对Android代码的架构做出了一个官方的回应. Google 2017 I/O开 ...

  7. Android官方架构组件介绍之LifeCycle(一)

    Android官方架构组件介绍之LifeCycle 下面是官方提供的Android App开发的架构图: 从上图可以看到一些关键字:ViewModel,LiveData,Room等.其实看了上面视频的 ...

  8. Android应用程序的基本组件介绍

    1.Activity和View Activity是Android应用中负责与用户交互的组件,它只能通过setContentView(View)来显示指定组件. View组件是所有UI控件.容器空间的基 ...

  9. Android Application Fundamentals——Android应用程序基础知识

    Application Fundamentals--应用程序基础知识 Key classes--关键类 Activity Service BroadcastReceiver ContentProvid ...

随机推荐

  1. synchronized的对象锁和类锁

    概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的. 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制, ...

  2. 巨丑vue

    <template> <div> <div class="demo-type" align="right" style=" ...

  3. canvas实现水印

    最近遇到一个需求,给所有页面加水印(登录人),不影响其他点击等功能的使用,目的是防止信息外漏,当时就在想:这年头,PS就不说人人都能使用,谁手机还没个涂鸦功能,防不了,但是就是这么个需求,那就实现吧! ...

  4. 20.包含min函数的栈 Java

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路 借助辅助栈实现: 压栈时:若辅助栈为空,则将节点压入辅助栈.否则,当当前节点小于 ...

  5. IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(一)

    新人接触springboot,IDE使用的是IntelliJ IDEA 2017.3 ,自己摸索了很久,现在自己整理一下,里面有些操作我自己也不懂是为什么这样,只是模仿公司现有的项目,自己搭建了一个简 ...

  6. koa 项目实战(九)passport验证token

    1.安装模块 npm install koa-passport -D npm install passport-jwt -D 2.解析token 根目录/config/passport.js cons ...

  7. Centos7 部署.Net Core+Nginx+Supervisor

    1.安装.Net Core SDK 1.1. 在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项.这只需要每台机器完成一次. sudo rpm -Uvh https ...

  8. PCB Layout初学者必会知识总结(转)

    PCB是印刷电路板(即Printed Circuit Board)的简称.印刷电路板是组装电子零件用的基板,是在通用基材上按预定设计形成点间连接及印制元件的印制板.该产品的主要功能是使各种电子零组件形 ...

  9. 008-ICMP协议(网络控制文协议)

    一.概述 ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息.控制 ...

  10. R语言与概率统计(三) 多元统计分析(下)广义线性回归

    广义线性回归 > life<-data.frame( + X1=c(2.5, 173, 119, 10, 502, 4, 14.4, 2, 40, 6.6, + 21.4, 2.8, 2. ...