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 组件(activity,service,content provider,broadcast receiver,intent)详解相关推荐

  1. BroadCast Receiver(广播)详解

    目录 静态广播 1.首先在这边创建广播接收器 2.在AndroidManifest.xml中写入静态接收名 3.在主方法把广播发送给静态广播接收者 4.在广播接收器里面接收广播 动态广播: 1.创建广 ...

  2. Android应用安全之Content Provider安全

    android平台提供了Content Provider,将一个应用程序的指定数据集提供给其它应用程序.这些数据可以存储在文件系统.SQLite数据库中,或以任何其它合理的方式存储.其他应用可以通过C ...

  3. Android复习10【Service与Thread的区别、Service的生命周期、Service生命周期解析(相关方法详解、启动方式的不同、绑定)、音乐播放器+服务】

    音乐播放器Android代码下载:https://wws.lanzous.com/ifqzihaxvij 目   录 Service与Thread的区别 Service的生命周期 Service生命周 ...

  4. 阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解

    阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确 ...

  5. Android VCard联系人备份恢复(导入/导出)详解

    原文地址为: Android VCard联系人备份恢复(导入/导出)详解 首先我们简单的看下在Android中联系人的存储结构. 工作环境:android 2.3.3 联系人的主要数据存放在raw_c ...

  6. Android M新特性Doze and App Standby模式详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  7. android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解

    Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...

  8. Android异步处理三:Handler+Looper+MessageQueue深入详解

    本博文地址:http://blog.csdn.net/mylzc/article/details/6771331 转载请注明出处 Android异步处理系列文章索引 Android异步处理一:使用Th ...

  9. Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash

    Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...

最新文章

  1. [JSOI2018]军训列队
  2. 本地生活服务 巨头们玩不转的电商蓝海
  3. windows终止处理程序( __try __finally) 简单解析
  4. 装饰器模式(讲解+应用)
  5. layui 父页面弹框中获取子页面的内容
  6. java锁以及双重检查
  7. 擦窗机器人测试标准_擦窗机器人,我选择玻妞的三个理由!
  8. 操作系统之文件管理:8、文件系统实例
  9. Javascript图片滚动
  10. vi/vim 基本使用方法
  11. 笨办法学Python,其实一点都不笨
  12. 【信息学奥赛一本通】网址链接
  13. C++ 虚函数和虚函数表
  14. 小学教训计算机培训的简单内容,小学计算机教育随笔
  15. chrome主页被毒霸网址大全劫持解决办法
  16. [踩坑记录]VS2017+大恒MER-131-210U3C相机
  17. 软件架构模式 mark Richards - 读后总结 3 - 微内核架构
  18. Js 跳转页面和打开新窗口的方法
  19. 郭鹤年--亚洲糖王与酒店巨子
  20. vue使用防抖节流(提交表单、实时搜索)

热门文章

  1. 计数信号量的删除与状态查询
  2. js考试题 html5新特性,Web前端初级面试题总结
  3. openssl 加密解密 指令_OpenSSL未来架构设计,3.0初步实现
  4. python 实现 softmax
  5. opencv 仪表数字切割
  6. opencv 车牌切割
  7. python爬虫基础(一)~爬虫概念和架构
  8. 文巾解题 1190. 反转每对括号间的子串
  9. 从无到有算法养成篇-算法基础常识
  10. 细数二十世纪最伟大的十大算法