Android应用程序结构--比较偏的考试题目

本文介绍Android的体系结构,Android应用程序的组成和Android应用的逻辑组成。

   1. Android工程文件组成

    在包管理器中展开项目后如下图所示:

项目结构的剖析
  新建的Android项目包含了src、gen、bin、assets、bin、res等目录,AndroidMainifest.xml是Android项目所必须的,其他目录、文件都是可选的。

src目录
  src只是一个普通存放Java源文件的目录。

res目录
  res是存放Android项目的各种资源文件,该目录里存放了android应用所用的全部资源,包括图片资源、字符串资源、样式资源、尺寸资源等等。
  按照资源又分为drawable、layout、menu、values目录

drawable子目录
  drawable子目录主要图片资源文件,支持的格式由.png、.jpg等位图文。
  drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi四个子目录则分别用于存放小、中、大、特大四种图片文件。

layout子目录
  layout存放界面布局文件。
    values存放各种xml格式的资源文件,如
      dimens.xml尺寸资源文件;
      string.xml字符串资源文件;
      styles.xml样式资源文件;

bin目录
  bin用于存放生成的目标文件,如Java的二进制文件、资源打包文件(.apk后缀)、Dalvik虚拟机的可执行文件性文件(.dex后缀)

gen目录
  gen用于保存Android自动生成一个R.java清单文件。

AndroidManifest.xml(Android应用的清单文件
  AndroidManifest.xml文件是Android项目的系统清单文件,每个项目都必须的。
  它是Android项目整个全局描述文件,用于控制Android应用的名称、图标、访问权限等整体属性。
  AndroidManifest.xml清单通常包含的信息
  (1)应用程序的包名
  (2)应用程序所包含的组件
  (3)应用程序兼容的最低版本。
  (4)应用程序使用系统所需的权限声明
  (5)其他程序访问该程序所需的权限声明

<manifestxmlns:android="http://schemas.android.com/apk/res/android"   

package="com.example.hero"   

android:versionCode="1"   

android:versionName="1.0">   

   

<uses-sdk       

android:minSdkVersion="8"       

android:targetSdkVersion="15"/>      

   

<application       

android:icon="@drawable/ic_launcher"       

android:label="@string/app_name"       

android:theme="@style/AppTheme">       

       

<activity           

android:name=".MainActivity"           

android:label="@string/title_activity_main">           

<intent-filter>               

               

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

                

<categoryandroid:name="android.intent.category.LAUNCHER"/>           

 intent-filter>       

activity>   

application>

manifest>

AndroidManifest.xml应用权限说明(比较偏的考试题目会遇到,例如:说明AndroidManifest.xml的作用)
  一个Android应用程序可能需要权限才能调用Android系统的功能,一个Android应用也可能被其他应用程序调用,因此它也需要声明调用自身所需的权限。
  1.声明该应用自身所拥有的权限
    通过元素添加子元素即可自身声明权限。
    
    

    2.声明调用该应用自身所需的权限
      通过元素里添加如下代码:
      
      

            拓展:Android usrs-prmission 权限大全

自动生成的类R.java

public final class R {   

public static final class attr {    }   

public static final class dimen {       

public static final int padding_large=0x7f040002;       

public static final int padding_medium=0x7f040001;       

public static final int padding_small=0x7f040000;   

 }   

public static final class drawable {       

public static final int ic_action_search=0x7f020000;       

public static final int ic_launcher=0x7f020001;    }   

public static final class id {       

public static final int menu_settings=0x7f080000;    }   

public static final class layout {       

public static final int activity_main=0x7f030000;    }   

public static final class menu {       

public static final int activity_main=0x7f070000;    }   

public static final class string {       

public static final int app_name=0x7f050000;       

public static final int hello_world=0x7f050001;       

public static final int menu_settings=0x7f050002;       

public static final int title_activity_main=0x7f050003;    }   

public static final class style {       

public static final int AppTheme=0x7f060000;    }}

R.java文件(比较偏的考试题目会遇到,例如:说明R文件的作用)

是由aapt工具根据应用中的资源文件来自动生成的,因此我们可以将R.java理解成android应用的资源字典。
    aapt生成R.java文件的两条主要规则:
    (1)每个类对应R类的一个内部类
    (2)每个具体的资源项对应于内部类的一个public static final int 类型的Field。
    随着不断的对Android项目添加资源,R.java文件的内容也会越来越多。

         2. Android体系结构

         Android的软件层次结构包括一个操作系统,中间件,应用程序。其软件层次结构自上而下可分为:

  • 应用程序
  • 应用程序框架
  • 各种库和Android的运行时环境
  • 操作系统层
    应用程序:以java语言编写,设计用户界面交互设计。Android本身提供了桌面,联系人,电话,浏览器等很多核心的应用。

    应用程序框架:为应用程序提供系统的API。通过Android的应用程序框架,开发人员可重用各种组件和服务。应用程序的框架组成部分:

    UI组件:包括列表,文本框,按钮等UI组件,是用户可视的部分。
    Content Providers:提供了一种应用程序程序可实现数据的访问和共享的机制。
    Notification Manager:能让应用程序将自己的警告信息显示在状态栏上,如显示收到新短信,提示电池信息。
    Activity Manager:管理应用程序的生命周期,并提供应用程序页面退出的机制。
    Android库和运行时环境

    Android包含一些核心的C/C++库,这些库能通过JNI技术供系统的各种组件使用。

    这些库包括:

    系统C库:从BSD继承来的标准C库。
    媒体库:包括多种常用的音频,视频格式回放和录制。同时支持静态图像文件,支持MPEG4,MP3,AAC,JPG,PNG,H.264,AMR等多种编码格式。
    Surface Manager:管理显示子系统,并为多个应用程序提供2D和3D的无缝融合。
    LibWebCore:浏览器引擎。
    SGL:底层的2D图形引擎。
    3D librarie:提供3D加速。
    FreeType:提供位位图和矢量的字体显示。
    SQLite:数据库应用。
    Android包含了一个核心库,该核心库提供了java语言核心库的大多数功能。

    每一个Android应用程序都在自己的进程空间内运行,都拥有一个独立的dalvik虚拟机实现。Dalvik被设计成一个设备,可同时高效的运行多个虚拟系统。dalvik虚拟机依赖于linux内核的一些功能,如线程调度,内存管理。

    3. Android应用程序组成

    Android程序包括以下四部分:

    • Activity
    • Broadcast Intent Receiver
    • Server
    • Content Provider
    Activity,一般代表手机屏幕的一屏,相当于浏览器的一个页面。在Activity中添加view,实现应用界面和用户交互。一个应用程序一般由多个Activity构成,这些Activity之间可互相跳转,可进行页面间的数据传递。每个Activity都有自己的生命周期。

    Intent Receiver,Intent是一次对将要执行的操作的抽象描述。通过Intent,可实现Activity与Activity之间的跳转。Intent最重要的组成部分是Intent的动作(Action)和动作对应的数据(data)。与Intent相关的一个类叫Intent Filters。它用来描述Intent能够用来处理哪些操作。

    Broadcast Intent Receiver,用于响应外部事件。BroadcastReceiver不能生成UI,所以对用户来说是不可见的。

    Service,运行在后台的应用程序。

    Content Provider:一个Content Provider提供了一组标准的接口,从而能够让应用程序保存或读取Content Provider的各种数据类型。一个应用程序可通过它将自己的数据暴露出去。对于外界的应用程序来说,它不需要关心这些数据的存储方式,存储地方,只需要通过Content Provide提供的r接口访问这些数据即可。当然这涉及到数据访问的权限问题。

你可能感兴趣的:(Android軟件開發)