1、Activity和View

Activity是Android应用中负责与用户交互的组件,它只能通过setContentView(View)来显示指定组件。

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

但是View组件需要放到容器组件中,或者使用Activity将它显示出来,方法调用activity的setContentView()方法。

两种方法:一种使用View对象作为参数

LinearLayout layout = new LinearLayout(this);//创建一个线性布局管理器,LinearLayout是ViewGroup的子类,后者有时View的子类。

设置该activity显示layout

setContentView(layout);

方法二:使用布局管理资源的ID作为参数

setContentView(R.layout.main);//设置该activity显示main.xml文件定义的view。

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

2、service

service与activity地位并列的,但它通常位于后台运行,一般不与用户交互,因此service组件没有图形用户界面。service组件通常用于为其他组件提供后台服务或者监控其他组件的运行状态。

3、BroadcastReceiver

表示广播消息接收器。它非常类似于事件编程中的监听器;与普通事件监听器监听的事件源是程序中的对象,而它监听的是事件源是Android应用中的其他组件。

使用BroadcastReceiver组件接收广播消息比较简单,开发者只需要实现自己的BroadcastReceiver子类,并重写onReceive(Context context,Intent intent)方法即可。当其他组件通过sendBroadcast()、sendStickyBroadcast()或者sendOrderedBroadcast()方法发送广播消息时,如该BroadcastReceiver也对该广播消息感兴趣(通过IntentFilter配置),BroadcastReceiver的onReceive(Context context,Intent intent)方法将会被触发。

实现了BroadcastReceiver之后,有两种方式注册这个系统级的“事件监听器”:

1、在java代码中通过Context.registerReceiver()方法注册BroadcastReceiver。

2、在AndroidManifest.xml文件中使用<receiver.../>元素来完成注册。

4、ContentProvider

如果Android应用之间需要实现实时的数据交换。使用标准ContentProvider。当用户实现自己的ContentProvider时,需要实现以下方法:

inset(Uri,ContentValues):向ContentProvider插入数据

delete(Uri,ContentValues):删除contentprovider中指定数据

update(Uri,ContentValues,string,String[]):更新ContentProvider中指定数据

query(Uri,String[],String,String[],String):从ContentProvider查询数据。

一个应用程序使用ContentProvier暴露自己的数据,另一个应用程序使用ContentResolver来访问数据。

5、Intent和IntentFilter

Intent是Android应用内不同组件之间通信的载体。它可以启动应用中另一个activity,也可以启动一个service组件,还可以发送一条广播消息来出发系统中的BroadcastReceiver。也就是说activity、service、BroadcastReceiver三种组件之间的通信都以Intent为载体。

a、需要启动一个activity时,可调用context的startActivity(Intent intent)或startActivityForResult(Intent intent,int requestCode)方法,这两个方法中的Intent参数封装了需要启动的目标Acitivity的信息。。

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

c、当需要发一个BroadcastReceiver时,可调用Context的sendBroadcast(Intent intent)、sendStickyBroadcast(Intent intent)或者sendOrderedBroadcast(Intent intent,String receivePermission),这两个方法中的Intent参数封装了需要启动的目标Acitivity的信息。

Intent封装了当前组件需要启动或出发的目标组件的信息。

当一个组件通过Intent表示了启动或触发另一个组件的“意图”之后,这个意图分为两类:

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

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

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

那么Android系统如何判断被调用组件是否符合隐式Intent呢?靠IntentFilter来实现,被调用组件可通过IntentFilter来声明自己所满足的条件--也就是声明自己到底能处理哪些隐式Intent。

Android应用程序的基本组件介绍的更多相关文章

  1. Android基础_1 四大基本组件介绍与生命周期

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

  2. Android应用程序窗体设计框架介绍

    在Android系统中,一个Activity相应一个应用程序窗体.不论什么一个Activity的启动都是由AMS服务和应用程序进程相互配合来完毕的.AMS服务统一调度系统中全部进程的Activity启 ...

  3. 解开Android应用程序组件Activity的"singleTask"之谜

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6714543 在Android应用程序中,可以配 ...

  4. Android应用程序窗口(Activity)实现框架简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8170307 前面我们学习了SurfaceFli ...

  5. Android测试(一)——Apk文件结构以及Android组件介绍

    APK文件结构: assests目录:一般存放的是不会被编译处理的文件,一般是资源性质的文件或者配置文件: libs目录:程序依赖的native库,包含针对特定处理器软件层的编译代码: res目录:存 ...

  6. Android学习06Android应用程序的基本组件

    一个Android应用程序可以由几个不同的组件构成,Android应用程序的基本组件包括:Activity,Service,BroadcastReceiver,ContentProvider和Inte ...

  7. Android应用程序的结构和解析

    什么是Android应用程序的构成? Android应用程序的各个组件又是什么? 各个组件和AndroidManifest之间的关系是什么? Android应用程序由松散耦合的组件组成,并使用应用程序 ...

  8. Android应用程序组件Content Provider简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6946067 在Android系统中,Conte ...

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

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

随机推荐

  1. 2018-2019-2 《网络对抗技术》Exp3免杀原理与实践 20165222

    1. 实践内容  1.1 正确使用msf编码器 使用 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b ...

  2. 10055 - Hashmat the Brave Warrior & 各数据类型所占字节数 (C语言)

    Problem A Hashmat the brave warrior Input: standard input Output: standard output Hashmat is a brave ...

  3. 转-JAVA webservice之CXF 范例--http://cxshun.iteye.com/blog/1275408

    JAVA webservice之CXF 博客分类: j2ee相关 昨天我们一起学习了一下xfire,今天我们来看一下CXF,为什么学完那个接着学这个呢.因为CXF是在xfire的基础上实现 的,所以我 ...

  4. 【小白的java成长系列】——windows下搭建和配置java环境

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/enson16855/article/details/25967851 基于非常多原因,还是得说说ja ...

  5. java单例模式等一些程序的写法....持续更新...

    一.单例模式的写法: public class MyFactory { /** * 饿汉式 */ private static MyFactory instance = new MyFactory() ...

  6. 汇编_指令_JMP

    JMP指令 JMP是汇编语言中的无条件跳转指令.无条件跳转指令可转到内存中任何程序段.转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出. 中文名:无条件跳转指令 外文名:JMP 和调用指 ...

  7. mysql connection phase(未整理)

    14.2.1 初始握手初始握手从服务器发送 Initial_Handshake_Packet开始.在这之后,客户端可以选择是否通过SSL_Connection_Request_Packet发送SSL连 ...

  8. MikroTik-ROS-无线设备传输距离

    近期在MikroTik官网论坛给出了官方无线成品设备的最大传输距离. 以下设备列表基于理想的环境条件,包括干扰,天气,校准精度等因素,表给出了基于802.11ac或802.11n在获取最大传输带宽的情 ...

  9. 详解Oracle的几种分页查询语句

    转载自:http://database.51cto.com/art/200904/118737.htm 分页查询格式: SELECT * FROM (SELECT A.*, ROWNUM RN FRO ...

  10. oracle 11g RAC 的一些基本概念(四)

    RAC   在Grid Infrastructure安装完以后,我们把注意力转移到集群上的Oracle软件的安装上来.我们看到,Grid Infrasctructure提供了运行RAC的框架,包括集群 ...