Android应用程序由组件组成,组件是可以解决被调用的基本功能模块。Android系统利用组件实现程序内部或程序间的模块调用,以解决代码复用问题,这是Android系统非常重要的特性。在程序设计时,在AndroidManifest.xml中声明可共享的组件,声明后其他应用程序可以直接调用这些共享组件。例如程序A实现了文件压缩的功能,并对外共享了这个组件,程序B则不必再开发文件压缩功能,而直接调用程序A的共享组件即可。

Android系统有4个重要的组件,分别是Activity 、 Service、BroadcastReceiver和ContentProvider。

Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件,与"窗体"的概念非常相似。Android应用程序可以包含一个或多个Activity,一般在程序启动后会呈现一个Activity,用于提示用户程序已经正常启动。Activity在界面上的表现形式一般是全屏窗体,也可以是非全屏悬浮窗或对话框。

Service一般用于没有用户界面,但需要长时间在后台运行的应用。例如在播放MP3音乐时,使用Service播放MP3音乐,可以在关闭播放器界面情况下长时间播放MP3音乐,并通过对外公开Service的通信接口,控制MP3音乐播放的启动、暂停和停止。

BroadcastReceiver是用来接受并响应广播消息的组件。大部分广播消息是有系统产生的 ,例如时区改变、电池电量低或语言选项改变等,但应用程序也可以产生广播消息,例如数据下载完毕等。BroadcastReceiver不包含任何用户界面,但可以通过启动Activity或者Notification通知用户接收到重要信息。Notification能够通过多种方法提示用户,包括闪动背景灯、震动设备、发出声音或在状态栏放置一个持久的图标等。

ContentProvider是Android系统提供的一种标准的共享数据机制,应用程序可以通过ContentProvider访问其它应用程序的私用数据。私用数据可以是存储在文件系统中的文件,也可以是SQLite中的数据库。Android系统内部也提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息,例如联系人信息和通话记录等。

Android系统通过组件机制,有效地降低了应用程序的耦合性,使向其他应用程序共享私用数据(ContentProvider)和调用其它程序的私有模块(Service)成为可能。

所有Android组件都具有自己的生命周期,称为组件生命周期,是从组件建立到组件销毁的整个过程。

Android开发之组件的更多相关文章

  1. 一个帖子学会Android开发四大组件

    来自:http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 这个文章主要是讲Android开发的四大组件,本文主要分为 一.Act ...

  2. Android开发四大组件概述

    这个文章主要是讲Android开发的四大组件,本文主要分为 一.Activity具体解释 二.Service具体解释 三.Broadcast Receiver具体解释 四.Content Provid ...

  3. 一天就学会Android开发四大组件

    这个文章主要是讲Android开发的四大组件,本文主要分为 一.Activity详解二.Service详解三.Broadcast Receiver详解四.Content Provider详解外加一个重 ...

  4. Android开发四大组件之Service(具体解释篇)

    Android开发之四大组件--Service 一.Service 简单介绍 Service是android系统中的四大组件之中的一个(Activity.Service.BroadcastReceiv ...

  5. 关于Android开发四大组件

    文章主要是讲Android开发的四大组件,本文主要分为 文章源自:http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 一.Act ...

  6. android开发常用组件【持续更新中。。。】

    UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...

  7. 从零开始学android开发-四大组件之一 Activity

    1.Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满屏的, ...

  8. android开发常用组件(库)推荐

    版本兼容:官方 support 全家桶 网络请求:Android-Async-Http.Retrofit.OkHttp.Volley图片加载:Glide 和 Universal-Image-Loade ...

  9. Android 开发 系统组件集合

    常用的TextView.Button.ImageView和几个常用布局就不介绍了,我们介绍一些特别好用但是常常忘记的组件. 标题栏组件 <androidx.appcompat.widget.To ...

随机推荐

  1. 合理使用软引用和弱引用,提升JVM内存使用性能

    在项目运行时,OOM异常是比较处理的,因为从日志看出的发生异常的代码点可能仅仅是最后一根稻草,从中可能未必能发现OOM的原因,而且OOM未必是固定重现的. 上医治未病,与其等OOM问题发生时再通过看日 ...

  2. Node.js系列-express(上)

    前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...

  3. win10下端口被占用解决办法

    调试socket通信的时候,如果程序未正常结束,重新启动会报端口被占用的错误. 一 查找被占用的端口 解决办法如下:按win+R输入cmd打开控制台,输入 netstat -ano|findstr 8 ...

  4. 跨进程的mutex

    1.操作系统分为ring0(内核层)和ring3(应用层)两层. ring0层出错会蓝屏,ring3层出错程序就会挂了. event和mutex创建他的指针是应用层,但是它的内部是ring0层,rin ...

  5. 百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转

    // 坐标转换 var coordTransform = (function () { // 一些常量 var PI = 3.1415926535897932384626; var X_PI = 3. ...

  6. HTML5之Notification简单使用

    var webNotification = { init: function() { if(!this.isSupport()) { console.log('不支持通知'); return; } t ...

  7. 覆盖equals()时总要覆盖hashCode()

    覆写如下: public class User{ private Integer id; private String userName; private String passWord; publi ...

  8. 前端-css

    页面css排版不错乱: 1.最外层div中 定义width=980px,当页面缩小以后,就在下面出现滚动条 2.使用 media 技术,bootstrp技术.页面自使用 一.css选择器 选择器 样式 ...

  9. iOS-strong和copy【详细解读】

    strong和copy是常用到的修饰符,那么什么时候用strong,什么时候用copy,先上一段代码再说(以下代码直接在ViewController中写): 先定义两个数组 ///strong @pr ...

  10. B 洛谷 P3604 美好的每一天 [莫队算法]

    题目背景 时间限制3s,空间限制162MB 素晴らしき日々 我们的情人,不过是随便借个名字,用幻想吹出来的肥皂泡,把信拿去吧,你可以使假戏成真.我本来是无病呻吟,漫无目的的吐露爱情---现在这些漂泊不 ...