【Android源码 栏目提醒】:网学会员为需要Android源码 的朋友们搜集整理了8 2Andriod应用程序的结构 - 行业软件相关资料,希望对各位网友有所帮助!
信号与信息处理张琦201120602032
Android的开发环境
Android开发环境两种安装方式在线离线仿真器的使用仿真器的使用多仿真器的通信
Android模拟器
Android Emulator可模拟电话本、通话等功能内置的浏览器和Google Maps都可以联网可以使用键盘输入可单击模拟器按键输入可以使用鼠标单击、拖动屏幕进行操作。
Android模拟器模拟器和真机的不同之处不支持呼叫和接听实际来电但可以通过控制台模拟电话呼叫呼入和呼出。
不支持USB连接。
不支持相机/视频捕捉。
不支持音频输入捕捉但支持输出重放。
不支持扩展耳机。
不能确定连接状态。
不能确定电池电量水平和交流充电状态。
不能确定SD卡的插入/弹出。
不支持蓝牙。
模拟器使用注意事项遇到系统关于C盘空间不足之类的提示是由于
Android模拟器每次运行时会临时生成几个.tmp后缀的临时文件一段时间后其可能占用几G的磁盘空间。
需要手工定期清理。
AndroidAndroid应用程序的构成应用程序的构成
Android系统没有使用常见的应用程序入口点的方法例如main应用程序就是由组件组成的组件是可以调用的相互独立基本功能模块。
根据完成的功能不同
Android划分了四类核心组件:ActivityServiceBroadcastReceiverContentProvider并不是每个程序都必须包含这个4个组件有的程序可能只包含部分组件组件之间的AndroidAndroid应用程序的构成应用程序的构成ActivityActivity是
Android程序的表示层。
应用程序中的每个屏幕显示都通过继承和扩展基类Activity来实现。
显示可视化的用户界面并接收与用户交互所产生的界面事件。
Activity利用View来实现应用程序的GUI图形用户界面而我们的手机用户则直接通过GUI和应用程序做交互如应用程序通过GUI向用户显示信息用户通过GUI向应用程序发出指令和响应。
Android应用程序可以包含一个或多个Activity一般在程序启动后会呈现一个Activity用于提示用户程序已经正常启动在界面上的表现形式全屏窗体非全屏悬浮窗体对话框例如一个短信应用程序我们需要一个Activity来显示联系人列表同时需要另一个Activity显示用户输入的短信内容甚至还可能需要第三个Activity显示已收到的短信内容。
虽然这些Activity整体形成了一个完整的短信程序用户界面但实际上每个Activity是独立的。
当然它们也有共同点——每个Activity都是继承Activity的子类如下图所示。
Activity是表示层中的基类基类Activity显示联系人列表的Activity显示用户输入消息的Activity显示用户已收短信内容的ActivityService与Activity相反Service没有可见的用户界面但Service的特点是能长时间在后台运行。
因此也可以这样理解Service是具有一段较长生命周期且没有用户界面的程序。
BroadcaseReceiverBroadcaseReceiver是用来接受并响应广播消息的组件。
广播是一种同时通知多个对象的事件通知机制。
Andriod中的广播通知要么来自系统要么来自普通应用程序。
很多事件都可能导致系统广播比如手机所在的时区发生变化电池电量低用户改变系统语言设置等。
当然也有广播来自应用程序比如一个应用程序通知其他应用程序某些数据已经下载完毕。
不包含任何用户界面可以通过启动Activity或者Notification通知用户接收到重要信息Notification能够通过多种方法提示用户包括闪动背景灯、震动设备、发出声音或在状态栏上放置一个持久的图标ContentProviderContentProvider是
Android系统提供的一种标准的共享数据的机制应用程序可以通过ContentProvider访问其他应用程序的私有数据私有数据可以是存储在文件系统中的文件也可以是SQLite中的数据库
Android系统内部也提供一些内置的ContentProvider能够为应用程序提供重要的数据信息AndroidAndroid程序结构程序结构根目录包含四个子目录src、assets、res和gen一个库文件:
android.jar两个工程文件:Androidmanifest.xmldefault.propertiessrc目录是源代码目录所有允许用户修改的java文件和用户自己添加的java文件都保存在这个目录中gen目录用来保存ADT自动生成的java文件例如R.javaR.java文件是ADT自动生成的文件包含对drawable、layout和values目录内的资源的引用指针
Android程序能够直接通过R类引用目录中的资源AndroidAndroid程序结构程序结构
android.jar文件是
Android程序所能引用的函数库文件
Android通过平台所支持API都包含在这个文件中assets目录用来存放原始格式的文件例如音频文件、视频文件等二进制格式文件。
此目录中的资源不能被R.java文件索引。
所以只能以字节流的形式读取。
一般情况下为空AndroidAndroid程序结构程序结构res目录是资源目录有三个子目录用来保存
Android程序所有资源drawable目录用来保存图像文件layout目录用来保存与用户界面相关的布局文件valuse目录保存文件颜色、风格、主题和字符串等在HelloAndroid工程中ADT在drawable目录中自动引入了icon.png文件作为HelloAndroid程序的图标文件在layout目录生成了mail.xml文件用于描述用户界面AndroidAndroid程序结构程序结构main.xml文件是界面布局文件利用XML语言描述的用户界面Strings.xml文件用来存放定义的字符串的AndroidAndroid程序结构程序结构AndroidManifest.xml是XML格式的
Android程序声明文件包含了
Android系统运行
Android程序前所必须掌握的重要信息这些信息包含应用程序名称、图标、包名称、模块组成、授权和SDK最低版本等而且每个
Android程序必须在根目录下包含一个AndroidManifest.xml文件??AndroidAndroid程序结构程序结构1.package edu.hrbeu.HelloAndroid2.public final class R 3.public static final class attr 4.5.public static final class drawable 6.public static final int icon0x0200007.8.public static final class layout 9.public static final int main0x03000010.11.public static final class string 12.public static final int app_name0x04000113.public static final int hello0x04000014.15.R.java文件不能手工修改如果向资源目录中增加或删除了资源文件则需要在工程名称上右击选择Refresh来更新R.java文件中的代码R类包含的几个内部类分别与资源类型相对应资源ID便保存在这些内部类中例如子类drawable表示图像资源内部的静态变量icon表示资源名称其资源ID为0x7f020000。
一般情况下资源名称与资源文件名相同资源引用有两种情况一种是在代码中引用资源另一种是在资源中引用资源代码中引用资源需要使用资源的ID可以通过R.resource_type.resource_name或
android.R.resource_type.resource_name获取资源IDresource_type代表资源类型也就是R类中的内部类名称resource_name代表资源名称对应资源的文件名或在XML文件中定义的资源名称属性资源中引用资源引用格式package:type:name表示对资源的引用package是包名称如果在相同的包package则可以省略1.2.6.8.10.11.12.13.14.15.16.17.
Android应用程序中最重要的文件之一。
它是
Android程序的全局配置文件是每个
android程序中必须的文件。
它位于我们开发的应用程序的根目录下描述了package中的全局数据包括package中暴露的组件activities services 等等以及他们各自的实现类各种能被处理的数据和启动位置等重要信息.该文件提供了
Android系统所需要的关于该应用程序的必要信息即在该应用程序的任何代码运行之前系统所必须拥有的信息。
主要功能它指定了该应用程序的Java包该包名作为应用程序的一个独特标识。
它描述了应用程序组件该应用程序由哪些activityservicebroadcast receiver和content provider组成。
它指定了实现每个组件的类以及公开发布它们的能力例如它们能持有哪个Intent信息。
这些声明使
Android系统知道这儿有什么组件以及在什么条件下它们可以被载入。
它决定那些进程将容纳应用程序组件。
它声明了本应用程序必须拥有哪些许可以便访问API的被保护部分以及与其他应用程序交互。
它也声明了其他应用程序在和该应用程序交互时需要持有的许可。
它列出了Instrumentation类可以在应用程序运行时提供简档和其他信息。
这些声明仅当应用程序在开发和测试过程中被提供它们将在应用程序正式发布之前被移除。
它声明了该应用程序所需的
Android API的最小化水平。
它列出了该应用程序必须链接的库。
//根节点描述了package中所有的内容 //请求你的package正常运作所需赋予的安全许可。
一个manifest能包含零个或更多此元素//声明了安全许可来限制哪些程序能使用你的package中的组件和功能。
一个manifest能包含零个或更多此元素//声明了用来测试此package或其他package指令组件的代码。
一个manifest能包含零个或更多此元素//指定当前应用程序兼容的最低sdk版本号//包含package中application级别组件声明的根节点。
此元素也可包含application中全局和默认的属性如标签icon主题必要的权限等等。
一个manifest能包含零个或一个此元素不允许多余一个//用来与用户交互的主要工具。
当用户打开一个应用程序的初始页面时一个activity大部分被使用到的其他页面也由不同的activity所实现并声明在另外的activity标记中。
//声明了指定的一组组件支持的Intent值 . . . //Service是能在后台运行任意时间的组件 . . . //IntentReceiver能使你的application获得数据的改变或者发生的操作即使它当前不在运行 . . .//ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件 最后我们特别向大家介绍Manifest文件中权限声明。
权限声明在智能手机中是一种比较常见的应用程序保护机制其基本思想是通过AndriodManifest.xml文件中显式地声明应用程序需要的权限防止应用程序错误地使用服务不恰当访问资源最终达到提高Andriod应用程序健壮性改善用户体验的目的。
Andriod中每种权限都用一个独立的标签表示比如1andriod.permission.SEND_SMS2
android.permission.CALL_PHONE3andriod.permission.READ_OWNER_DATA从上述这些表示权限名称的标签中我们不难发现其所代表的含义。
比如andriod.permission.SEND_SMS表示发送短信的权限。
Andriod系统每种功能或每种特性都可以用一个权限来表示。
自然地如果你的应用程序希望访问某种特性那么你就需要在andriodManifest.xml文件中对权限进行声明。
否则应用程序将无法使用希望的功能而且不会关于缺少权限的错误信息提示因此开发人员应该特别留意权限尤其是当你的应用程序莫名其妙不能正常工作时。
上一篇:
android输入法01:SoftKeyboard源码解析03
下一篇:
酒店管理信息系统论文