所有Android程式的运作流程,都定义在Activity中。

Android系统与其他系统很不一样的地方时:它的应用程式并不直接与底层系统紧密结合,而是跑在Android框架中。这意思是设计Android应用程式时,我们并不需要关心实际上运作的机器是哪一牌的手机或是哪一种嵌入式系统,或使用哪一种架构(ARM、X86、MIPS),我们要关心的只有Android框架提供了哪些功能,好让我们能操作这台设备。具体来说就是我们只要知道这台机器的屏幕大小、有没有键盘,有没有支持GPS等等信息,就知道我们写的应用程序是否能在这台机器上顺畅地运作。Android框架与底层系统的整合问题完全可以留给底层工程师来操心。

在执行【startActivity】函数时,应用程序并不是直接呼叫另一个Activity,而是将【Intent】传进Android框架中。Android框架会查看【startActivity】呼叫所传入的动作与Intent内容是否在注册表中,如果符合,就启动对应的服务或Activity。

Android系统中的每一个应用程序,在安装的过程中,都得事先在Android框架中注册、登记这个应用程序所建立的Activity,并事先注明会使用到的服务。比如当我们在Android上安装我们撰写的BMI应用程序时,BMI应用程序就会向Android框架登记相关咨询:BMI应用程序将会用到【Bmi】这个Activity。

这份信息存在于每个Android应用项目根目录下的【AndroidManifest.xml】文档中。如果我们在程式里,要用到其他应用程序或服务所提供的功能,也需一并在此列出。

在安装应用程序的时候,Android框架会根据应用程式提供的这份清单,将资讯注册于Android框架的注册表中。

备注:

Android应用程序的运作流程,存在于四种载体中:

1、Activity    2、Broadcast Intent Receiver    3、Service    4、Content Provider

预设的Activity 清单

我们使用eclipse Android 开发工具打开「BMI/AndroidManifest.xml 」档案。切换到
「AndroidManifest.xml」分页标签,查看预设的「BMI/AndroidManifest.xml」档案原始码:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http:/ /schemas.and roid.co m/apk/ res/and roid"
        package="com.demo.and roid.b mi"
        android:versionCode="1"
        android:versionName="1.0.0" >
        <application android:icon="@drawable/icon" >
                <activity
                        android:name=".Bm i" android:label="@string /app_name" >
                        <intent-filter >
                                <action android:name="and roid.intent.action.M AIN" />
                                <category android:name="and roid.intent.categor y.LAUNCHER" />
                          </intent-filter>
                </activity>
        </application>
</manifest>

我们分行讲解如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http:/ /schemas.and roid.co m/apk/ res/and roid"
....>
....
</manifest>

【AndroidManifest.xml】这个文档也是以XML格式描述的,每个Android应用程序都需要一个【AndroidManifest.xml】文档,每份【AndroidManifest.xml】文档的开头都会出现这段叙述。而整个【AndroidManifest.xml】文档的叙述,都包含在【manifest】这个主要标签中。

package = "com.demo.android.bmi"

【package】是【manifest】(清单)标签的一个特别属性,范例中的内容可用来标明,这个应用程序的进入点存在于【com.demo.android.bmi】这个命名空间中。

android: versionCode="1"

android: versionName="1.0.0"

【android: versionCode】和【android: versionName】是应用程序版本号。这两个属性是可选的。【android: versionName】是给使用者看的版本号;【android:versionCode】则是开发者用的内部版本号,一般使用流水号。

<application android:icon="@drawable/icon"> …… </application>

【manifest】标签中主要包含一个【application】标签(备注1)。【application】标签里面,定义了所有这个应用程序用到的Activity、服务等信息。【application】标签中的【android:icon】属性,定义了这个应用程序将显示在Android主画面中的应用程序图示。【android:icon="@drawable/icon"】表示应用程序图示的资源存在于【res/drawable/icon】中。图示的大小必须超过64X64pix。

<activity android:name=".Bmi" android:label="@string/app_name">  ……  </activity>

【application】标签中所有用到的Activity,都要包含在一个个【activity】标签中(备注2)。Activity是Android应用程序与使用者互动的主要元素,当使用者开启一个应用程序,第一个看到的画面就是一个Activity。若是一个应用程序中包含多个画面时,会定义多个不同的Activity,我们也必须在【application】标签中,使用多个【activity】标签,为不同的Activity添加描述。如果我们已经在程序代码中定义好了Activity,却忘记了在【AndroidManifest.xml】文档中加入对应的【activity】标签,那么在执行中呼叫到这个Activity的时候,将无法开启这个Activity。

【activity】标签的【android:name】属性,指出了这个Activity所对应的类别(class),【android:label】属性,则用来指定这个【activity】的代号。

因为在上一层【Manifest】标签属性中已经定义了【package="com.demo.android.bmi"】,因此在【activity】标签的【android:name】属性中,【.Bmi】代表着【com.demo.android.bmi.Bmi】的简写。也可以写成【Bmi】,一样是代表【com.demo.android.bmi.Bmi】这个类别。

<intent-filter>

<action android:name="android.intent.anction.MAIN" />

<category android:name="android.intent.category.LAUNCHAR" />

</intent-filter>

【intent-filter】标签定义了这个【activity】的性质。【intent-filter】中主要包含了两个标签:【action】和【category】标签。【action】标签中的【android:name】属性,其内容【android:intent.action.MAIN】表示:这个Activity是此应用程序的进入点(就像程序中常见的main主程序)。常见的还有【android.intent.action.EDIT】等标签。【category】标签中的【android:name】属性,其内容【android.intent.category.LAUNCHER】表示:开启这个应用程序时,应先执行这个Activity。

我们把整个档案合到一起看,可以总结出这个档案所传达的信息:在【com.demo.android.bmi】路径下的【Bmi.java】这个文档中,已经以了一个主要的Activity;当我们打开Android的时候,显示的是位于【res/drawable/icon】的图标。一旦我们按下图示来启动这个应用程序,Dalvik虚拟机会去寻找到定义了【android.intent.category.LAUNCHER】内容的【.Bmi】activity,并呼叫执行。

备注1:

除了【application】标签外,还有【uses-permission】(例如允不允许存取SMS、能否存取联络簿、相机功能等)、【permission】、【instrumentation】等主要标签。

备注2:

除了【activity】标签外,对应于Android应用程序的运作流程,还有【service】、【receiver】、【provider】等主要元素。

Android Manifest相关推荐

  1. Android - Manifest 文件 详解

    Manifest 文件 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20899281 Manifest可以定义应用程序及其 ...

  2. 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?...

    安卓(android)建立项目时失败,出现AndroidManifest.xml file missing几种解决方法? Eclipse新建项目,遇到这样的问题,注意如下: 1.文件名最好不要用中文. ...

  3. android manifest简介

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

  4. java 名称可以包含-吗_java – “标签属性名称包含无效字符”. “Android Manifest

    我在 Android Manifest中收到错误"Tag属性名称有无效字符'.",而没有明显无效的字符.这是代码: android:name="Quiz 31" ...

  5. 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)

    安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中) 参考文章: (1)安卓(android)建立项目时失败,出现And ...

  6. Android manifest 获取源代码

    /********************************************************************************** Android manifest ...

  7. Android Manifest 权限描述大全

    文章转自:http://www.bejson.com/doc/AndroidManifest/ Android Manifest 权限描述大全 安卓猿可以方便的查看安卓权限描述功能 权限 名称 描述 ...

  8. Android Manifest merger failed with multiple errors参考解决方法

    判断报错类别 Android Manifest merger failed with multiple errors , see logs 主要分为俩类(个人遇见的情况): 与引入的其他库中的Mani ...

  9. Android manifest文件中的标签详细介绍

    Android manifest文件中的标签详细介绍 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如: ...

  10. 深入浅出API——android.Manifest

    最近参加了两个大公司的面试,才发现自己欠缺的真的好多吧,好吧,我承认我是入门级菜鸟,没要达到这些好公司的要求,好公司要的不仅仅是基础,还需要你深入的了解,发现自己的不足,那就努力去改正,坚持每天翻译一 ...

最新文章

  1. keras卷积层用法API
  2. Qt编程之通过鼠标滚轮事件缩放QGraphicsView里面的Item
  3. 锤子Smartisan T1手机官方4.4.2系统内核版本号信息
  4. c++基础学习(07)--(类)
  5. JAVA浅层复制深层复制理解-java_01_20160824
  6. od找数据 遇到dll_OriginPro:最近比较烦,被360盯上了【数据绘图】
  7. 金蝶站点重新输入服务器ip,金蝶KIS客户端和服务器不在同一IP段互相访问
  8. ubuntu下mysql的master-slave,双master 及A-B-C级联主从配置说明
  9. word 文档规范,比如标题、正文的字号
  10. 最新最全的免费股票数据接口--沪深A股指数实时交易数据API接口(七)
  11. ASK,OOK,FSK,GFSK简介
  12. c语言运算符ppt,C语言运算符课件.ppt
  13. 开机提示小娜无法在本计算机运行,win10 20h2提示此应用无法在你的电脑上运行解决方法...
  14. R语言非线性拟合之多项式回归
  15. 世纪佳缘再出事故,区块链能成为搅动婚恋行业的新鲶鱼吗?
  16. 房产门户企业织梦模板/DedeCMS房地产楼盘网站模板下载
  17. 2020-10-21 ubuntu 打包解包压缩解压tar gz bz2 tar.Z tgz rar lha格式
  18. 详解微信支付中的异步通知
  19. java 定时关机_「window定时关机命令」电脑定时关机命令,这个方法适用于win7及以下系统 - seo实验室...
  20. 【软件体系结构】考点总结 第三章 软件体系结构风格 XJU

热门文章

  1. 后台结束AlibabaProtect.exe
  2. Win7 IIS部署网站局域网内用户无法访问网站解决方案
  3. 贴花纸怎么贴_谁知道墙壁贴花纸怎么贴
  4. java全栈系列之JavaSE-面向对象(继承详解)035
  5. 有赞大裁员,竟把人员优化写进 OKR
  6. 张艾迪(创始人):世界最高级文明信仰
  7. SQL SERVER数据库备份与复制(4):让SQL SERVER自动备份方法一
  8. CODOSYS之结构化文本(ST)—— 初级篇(三)基础-数据类型
  9. linux内核的红黑树
  10. 219年北京移动校园卡200打一年究竟是不是骗局?到底有没有坑?