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展开详述。

  

  

Android学习笔记(一)Android应用程序的组成部分的更多相关文章

  1. android学习笔记(9)android程序调试学习

    相应若水老师的第十四课 一,Log日志输出 Log.v(tag,message);        //verbose模式,打印最具体的日志  Log.d(tag,message);        // ...

  2. Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...

    下面是Android的学习笔记,原文地址. 我是使用adb devices出现如下红字错误, 使用第一种方法方法,结果关掉豌豆荚就可以了. android adb启动失败问题 adb server i ...

  3. android学习笔记45——android的数据存储和IO

    android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...

  4. Android学习笔记之Android Studio添加新的Activity

    1.创建Android项目工程:AndroidTest 创建过程可参考网上诸多教程. 2.添加新的Activity,步骤如下 a. 在layout文件夹上右键,New-Activity-相应Activ ...

  5. Android学习笔记之 android:collapseColumns ,android:shrinkColumns 和stretchColumns

    摘自:http://blog.csdn.net/sjf0115/article/details/7213565/ TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但 ...

  6. Android学习笔记之Android Studio下创建menu布局文件

    1.创建menu文件夹 Android Studio项目中如果没有menu文件夹,在res文件夹右键,new-Android resource directory: 则会弹出下图对话框,在Resour ...

  7. Android学习笔记_79_ Android 使用 搜索框

    1.在资源文件夹下创建xml文件夹,并创建一个searchable.xml: android:searchSuggestAuthorityshux属性的值跟实现SearchRecentSuggesti ...

  8. Android学习笔记_70_一个应用程序启动另一个应用程序的Activity

    第一种(我自己写的) :之前在网上看来一些,很多不是我要的可以启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activit ...

  9. Android学习笔记(35):Android活动条

    在Android3.0之后,Google对UI导航设计上进行了一系列的改革,当中有一个很好用的新功能就是引入的ActionBar,用于代替3.0之前的标题栏,并提供更为丰富的导航效果. ActionB ...

  10. Android学习笔记(1)—Android Studio安装

    Android Studio 是一个全新的 Android 开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工 ...

随机推荐

  1. Sqlserver通过链接服务器访问Oracle的解决办法

    转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlse ...

  2. SQL2008安装提示"Microsoft visual studio 2008早期之前的版本"解决(这是我认为最简单有效的方法)

    作者:冰封 日期:2013-10-18 原文地址:http://www.skywj.com/thread-9230-1-1.html 在安装SQL Server的时候提示 Microsoft visu ...

  3. ios 字符串替换方法

    string=[string stringByReplacingOccurrencesOfString:@"-"withString:@"/"];

  4. LINQ 101——分区、Join、聚合

    一.Partitioning 分区 Take 例1:取前3个数 static void Linq1() { , , , , , , , , , }; ); Console.WriteLine(&quo ...

  5. Android学习3—电话拨号器

    本测试主要实现了一个Android的拨打电话的功能 一:界面预览 由图中可以看出,这个Activity需要3个控件:TextView.EditText.Button 其实实现一个功能要经过几个步骤: ...

  6. JavaScript学习总结【2】、JS基础

    1.JS 命名规范 命名规范是很有必要的,可增强代码的可读性,一眼就能看懂要表达的意思,规范就是符合规则,使代码有利于后期维护,也能很大程度的提高开发效率.一个正常的网站有很多 JS 代码,如果在编写 ...

  7. 《JavaScript高级程序设计 第3版》-学习笔记-3

    P84-P137页, 这一章看的真久,这个月事太多了.有些内容在代码注释里没提出来了 1.JS强大的数组类型,元素类型任意,提供了非常多的操作数组的方法和属性 /* 数组类型 */ //stack v ...

  8. 异步请求HTTP

    代码: @interface HttpProcessor : NSObject <NSURLConnectionDataDelegate> { NSMutableData *buffer; ...

  9. LightOj_1342 Aladdin and the Magical Sticks

    题目链接 题意: 地上有n种棍子, 其中有两种类型, 一种类型是可识别, 一种类型是不可识别, 每个棍子都有一个权值. 当你捡到可识别的, 那么你以后就不会再捡这个棍子, 如果是不可识别的, 那么你有 ...

  10. Java 去除HTML标签转化成纯文本

    package com.ahgw.common.global; import java.util.regex.Pattern; /** * 截取HTML代码 * * @author YangJunpi ...