专栏首页CodingBlockAndroid学习笔记(一)Android应用程序的组成部分

Android学习笔记(一)Android应用程序的组成部分

  Android应用程序由松散耦合的组件组成,并使用应用程序Manifest绑定到一起;应用程序Manifest描述了每一组件和它们之间的交互方式,还用于指定应用程序元数据、其硬件和平台要求、外部库以及必需的权限。

一、应用程序的基本结构模块

  · Activity:应用程序的表示层。每个UI都是通过Activity类的一个或多个扩展实现的。Activity使用Fragment和视图来布局和显示信息,以及响应用户动作。

  · Service:应用程序中不可见的工作者。运行时没有UI,可以更新数据源和Activity、触发通知和广播Intent。可以用来执行一个运行时间长的任务,或者不需要和用户交互的任务。

  · Content Provider:可共享的持久数据存储器(内容提供者)。用来管理和持久化应用程序数据,通常会与SQL数据库交互。可以通过配置自己的Content Provider来允许其他应用程序访问,也可以访问其他应用。

  · Intent:消息传递框架。Android中大量使用了Intent、Service或者Broadcast Receiver广播消息,以及请求对特定的一条数据执行操作。

  · Broadcast Receiver: Intent侦听器(广播接收者)。可以监听到那些匹配指定的过滤标准的Intent广播。它会自动地启动应用程序来响应某个接收到Intent。

  · Widget:可视化应用程序组件。它是Broadcast Receiver的特殊变体,可用于创建动态的交互式应用程序组件,用户可以把这些组件添加到他们的主屏幕上。

  · Notification:它允许向用户发送信号,但却不会过分吸引他们的注意力或者打断他们当前的Activity。它们是应用程序不可见或者不活动时吸引用户注意的首选方法。

二、Manifest文件简介

  每一个Android项目都包含一个Manifest文件——Android Manifest.xml,它存储在项目层次中的最底层。Manifest可以定义用用程序及其组件和需求的结构和元数据。

  Manifest包含了组成应用程序的每一个Activity、Service、Content Provider和Broadcast Receiver的节点,并使用Intent Filter和权限来确定这些组件和其他应用程序是如何交互的。此文件还可以指定应用程序的元数据(图标、版本号、主题等等) 以及额外的顶层节点,这些节点可以指定必需的安全权限和单元测试,以及定义硬件、屏幕和平台支持要求。

  Manifest文件有一个根manifest标签构成,该标签带有一个被设为项目包的package属性。它通常包含一个xmls:android属性来提供文件内使用的某些系统属性。

  使用versionCode属性可讲当前的应用版本定义为一个整数,每次版本更新,这个数字都会增加。使用versionName可以定义一个显示给用户的公共版本号。

  installLocation属性,是制定是否允许将程序安装到SD卡上,其值有preferExternal(首选外部存储器)和auto(系统决定)。不指定时,默认按到内部存储器中。由于取出或拒绝外部存储器存在的问题,以下程序不适合安装到外部存储器及其后果:

  · 具有Widget/Live Wallpaper和Live Folder的应用程序: Widget/Live Wallpaper和Live Folder将从主屏幕上移除,而且重启系统后可能不在可用。

  · 提供不中断服务的应用程序:程序和它运行的服务将被停止,并且不会自动重启。

  · 输入法引擎:安装到外部存储器的任何IME都会被禁用。在外部存储器再次可用后,用户必须重新选择IME。

  · 设备管理器:DeviceAdminReceiver及其管理能力将被禁用。

本篇博文先大体介绍应用程序的组成部分和Manifest文件,下一篇博文将对Manifest展开详述。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android学习笔记(三)Application类简介

      每次运行APP时,Application类都保持实例化状态。与Activity不同,配置改变不会导致应用程序重启。通过继承Application类,可以完成...

    codingblock
  • Android查缺补漏(View篇)--事件分发机制源码分析

    在上一篇博文中分析了事件分发的流程及规则,本篇会从源码的角度更进一步理解事件分发机制的原理,如果对事件分发规则还不太清楚的童鞋,建议先看一下上一篇博文 《And...

    codingblock
  • Android学习笔记(二)Manifest文件节点详解

      在上一篇博文中简单介绍了Manifest文件及其存放位置,本篇就来详细介绍一下Manifest文件中的节点和一些节点的基本作用,首先看一下Manifest文...

    codingblock
  • 「R」Shiny:工作流(一)开发工作流

    优化开发工作流程的目标是减少做出更改和看到结果之间的时间。迭代的速度越快,你可以进行的实验就越快,你就可以成为一名更好的 Shiny 开发人员。这里有两个主要的...

    王诗翔呀
  • 移动应用开发的五个致命的神话

    虽然手机应用程序开发不再是新的,仍然有许多误解应用发展。一些信仰只不过是被误导的,别人是错了。 当企业和企业家把时间和金钱浪费在没有人使用的应用程序,通常因为他...

    用户1289394
  • 架构师们说的 Serverless 到底是什么?

    简单来讲,FaaS(Function as a Service) 就是一些运行函数的平台,比如阿里云的函数计算、AWS 的 Lambda 等。

    一个会写诗的程序员
  • 在苹果应用商店的17个应用程序中发现iOS Clicker Trojan

    Wandera Threat Labs研究人员发现有十多个iOS应用程序感染了Clicker Trojan(点击木马)恶意代码并在苹果的应用商店传播。其使用和安...

    FB客服
  • 企业选择Html5做移动开发要慎之又慎

    从Html5问世的那天起,Html5的神奇功能就被无限放大,曾有分析师认为:Html5将开启移动互联网的无界之争,可是FaceBook抛弃Html5时,人们才幡...

    人称T客
  • IIS7的应用程序池

    最近将原来的系统迁移到IIS7.5上了,发现AspNetUpload只能运行在"程序程序池"的"经典"模式之下,采用"集成"模式后,AspnetUpload....

    菩提树下的杨过
  • 「应用架构」应用程序架构的当前趋势

    本文有些不是最最新的,但是方法和思路也有借鉴意义,稍后会介绍Gantner的最新应用架构趋势。

    首席架构师智库

扫码关注云+社区

领取腾讯云代金券