Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全。Android应用程序组件的主要类型有:活动(Activity),服务(Service),广播接收者(Broadcast Receiver),内容提供者(Content Provider),意图(Intent),小组件(Widget),通知(Notification)等。其中最重要的是前5种。在决定使用以上哪些组件来构建Android应用程序时,应该将它们列在AndroidManifest.xml文件中,这个文件用于声明应用程序组件以及它们的特性和要求。下面先分别对活动(Activity),服务(Service),内容提供者(Content Provider),广播接收者(Broadcast Receiver)和意图(Intent)5种组件加以介绍。

活动(Activity)

Activity是应用程序的表示层,为用户展示界面,一个Activity通常展现为一个可视化的用户界面,比如一个手机的联系人功能可能包含一个显示联系人列表的Activity,一个可编辑联系人信息的Activity,以及其他一些查看或修改信息的Activity。每一个Activity都是相对独立的,这些Activity一起工作,共同组成了一个联系人应用程序。一个应用程序可以包含一个或多个Activity,通常每个应用程序运行后都会启动一个Activity展现出第一个界面,在当前展现给用户的Activity中启动一个新的Activity或调用其他应用程序的Acitivity,实现从一个界面跳转到另外一个界面。

服务(Service)

Service在后台运行,没有展现出用户界面。它们可以为前台的Activity提供数据源更新,并触发通知。例如,用户处理其他事情的时候可以启动一个Service播放背景音乐,或者启动邮件客户端的一个Service通过间断性地连接邮件服务器下载新邮件。

Service的另一种重要的用途为通过AIDL(Android Interface Definition Language,Android接口描述语言)实现进程间通信。例如,在某一应用程序中,其他应用程序组件可以直接与该应用程序后台运行的Service进行交互;另一方面,多个应用程序通过Service,可以在保证进程安全的前提下,实现它们之间的通信 。

内容提供者(Content Provider)

Content Provider是一种应用间数据共享的机制,提供了多个应用程序共享存储数据的方式,相当于一种跨应用程序的数据操作,一个应用程序可以允许其他应用程序通过Content Provider对其SQL数据,图像,声音或其他数据类型进行增,删,改,查等操作。Content Provider为数据进行操作提供了统一的接口,为应用程序提供了4个接口函数:intsert,update,delete及query,Content Provider屏蔽了数据操作的具体实现细节,应用程序只需要通过Content Provider调用相应接口函数即可完成操作,这种方式大大简化了跨应用程序的数据操作。

广播接收者(Broadcast Receiver)

Broadcast Receiver不执行任何任务。每个Broadcast Receiver都会接收系统或应用程序产生的广播通知,并对广播通知做出响应。很多事件都可能导致系统广播,例如手机所在时区发生变化,电池电量低,用户改变系统语言设置等。应用程序同样也可以发送广播通知,例如通知其他应用程序某些数据已经下载完毕,可以使用了。

一个应用程序可以包含若干个Broadcast Receiver来响应它认为很重要的通知。Broadcast Receiver可以启动一个Activity以响应接收到的信息,或者通过Notification Manager通知用户。

意图(Intent)

Intent的作用是在组件之间传递信息和协调工作。Android彼此独立的应用组件需要互相调用,协调工作,最终整合成为一个真正的Android应用。组件之间的协调工作主要由Intent完成,它起到Activity,Service,Content Provider之间联系的纽带作用。Intent有许多具体的实现,但本质上它们代表着一组系列化的数据,能够在应用程序中传播以实现某些功能。一个Intent包含了一次操作的信息,比如需要的动作,该动作相关的数据以及Android系统所需要的信息。Android则根据此Intent提供的信息进行描述,负责找到满足这些信息的组件,将Intent传递给该组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的联系。

android应用程序的组件,Android基础之应用程序组件相关推荐

  1. 【转】基础的重要性(程序员之路) 经验分享15篇

    原文链接:基础的重要性(程序员之路) 基础的重要性(程序员之路) 学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心.最近在网上也看了许多前辈们的经验建议,再结合自 ...

  2. 【精讲】vue组件开发基础、多层嵌套(内含详细注释)、vuecomponent构造函数

    目录 vue组件开发基础 多层嵌套(内含详细注释) vuecomponent构造函数 第一部分:vue组件开发基础 <!--         vue中使用组件的三大步骤:         一 , ...

  3. Android基础之应用程序组件

    为什么80%的码农都做不了架构师?>>>    Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全.An ...

  4. Android 应用基础知识和应用组件

    应用基础知识 安装到设备后,每个 Android 应用都运行在自己的安全沙箱内: Android 操作系统是一种多用户 Linux 系统,其中的每个应用都是一个不同的用户: 默认情况下,系统会为每个应 ...

  5. Android Navigation 组件(基础篇)

    一.前言 在日常开发中,越来越多的会使用到一个activity嵌套多个fragment的场景,典型的例子就是app的首页,一般都会由一个activity+多个Fragment组成的底部导航界面,那对于 ...

  6. Android基础再回首——四大组件之Activity、Service俩兄弟

    Android基础再回首--四大组件之Activity.Service俩兄弟 偶尔的回首过去,总是有不一样的收获.今天就来回顾下Activity和service吧,不用嫌弃太基础了,打好基础是取得成功 ...

  7. android程序开发教案,Android移动应用开发基础教程教案.doc

    教 案 课 程 名 称Android移动应用开发基础教程(微课版)课 程 代 码系(部)教研室(实验室)授 课 教 师职 称 年 月 课 程 名 称Android移动应用开发基础教程(微课版)总计: ...

  8. android 搜索框组件,Android零基础入门|搜索框组件SearchView

    原标题:Android零基础入门|搜索框组件SearchView 一.SearchView概述 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当用户输 ...

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

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

最新文章

  1. 【 MATLAB 】数字信号处理中的几个常用序列产生的MATLAB代码
  2. C++和C语言的关系
  3. 数据持久层框架 Hibernate
  4. tensorboard ValueError: Duplicate plugins for name projector
  5. 利用正则匹配数字后边的字符_图解正则——字符匹配
  6. 分布式开放消息系统 ( RocketMQ ) 的原理与实践
  7. 检测到目标FTP服务可匿名访问
  8. SpringCloud(第 054 篇)简单 Quartz-Cluster 微服务,采用注解配置 Quartz 分布式集群... 1
  9. springboot细节挖掘(集成ElasticSearch)
  10. DPDK-UIO 驱动认识
  11. exe文件打不开应该怎么办?
  12. 计算机网络中数据包的分布,计算机网络习题.doc
  13. 服务器端网站自适应,[移动SEO]PC端和移动端最佳适配方案
  14. 我的HTC G16 CHACHA A810e版手机如何解锁和一键root的
  15. 坚果pro2s android 8,坚果Pro2s和iPhone8手机对比实用评测
  16. 图片文字介绍滑动效果代码介绍
  17. Inversion Lemma
  18. 音频线视频线和同轴电缆的关系(同轴线除了外面的屏蔽网还有中间的绝缘塑料体,而音频线一般只有外面的屏蔽网)
  19. c 全国计算机二级考试真题及答案,全国计算机二级考试《C语言》真题练习及答案...
  20. 云南民族大学计算机科学与技术在哪个校区,云南民族大学是不是有一个玉溪校区具体是在哪里...

热门文章

  1. 为什么那些每三年跳一次槽的人越跳越好? - 震撼
  2. MySql创建一个存储过程
  3. Linux系统软件包的管理   3月30日课程
  4. iOS UIModalPresentationFormSheet风格下的键盘隐藏
  5. 最近新学的小东西和单词
  6. 关于 CKEditor 3.6以后不兼容ie6的问题解决方案
  7. 重学TCP协议(9) 半连接队列、全连接队列
  8. web操作系统开发的_哪种操作系统更适合Web开发
  9. 写游戏软件要学什么_为什么要写关于您所知道的(或所学到的)的内容
  10. 2019 css 框架_宣布CSS 2019调查状态