现在的位置: 首页 > 移动开发 > 正文

Android应用的结构与基本组件

2018年09月19日 移动开发 ⁄ 共 2258字 ⁄ 字号 评论关闭

Android应用的结构

<1> res目录

res目录存放Android项目的各种资源文件,比如layout存放界面布局文件、values目录下则存放各种XML格式的资源文件,例如字符串资源文件:string.xml;颜色资源文件colors.xml;尺寸资源文件dimens.xml;drwable-ldpi、drawable-mdpi、drawable-hdpi分别存放小、中、大三中图片文件。

<2> src目录

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

<3> AndroidManifest.xml文件

AndroidManifest.xml文件是Android项目的系统清单文件,它用于控制Android应用的名称、图标、访问权限等整体属性。

AndroidManifest.xml清单文件通常可以包含如下信息:

应用程序的包名,该包名将会作为该应用程序的唯一标识;

应用程序所包含的组件,如Activity、Service、BroadcastReceiver和ContentProvider等;

应用程序兼容的最低版本;

应用程序使用系统所需的权限声明;

其他程序访问该程序所需要的权限声明。

<4> bin目录

该目录用于存放生成的目标文件,如Java二进制文件、资源打包文件等。

<5> gen目录

该目录保存Android自动生成的一个R.java清单文件。

每类资源对应R类的一个内部类。比如所有界面布局资源对应于layout内部类;所有字符串资源对应于string内部类;所有标识符资源对应于id内部类。

每个具体的资源项对应于内部类的一个public static final int类型的Field。

Android应用的基本组件

Android应用通常是由一个或多个基本组件组成。Android中最常用的组件就是Activity,此外还包括Service、BroadcastReceiver、ContentProvider等。

Activity和View

Activity是Android应用中负责与用户交互的组件,它通过setContentView(View)来显示指定组件。

View是所有UI控件、容器控件的基类,View组件是应用中用户实实在在看到的部分,但它需要放在容器组件或者使用Activity将它显示出来。

Service

Service与Activity的地位是并列的,它也代表一个单独的Android组件。Service和Activity的区别在于:Service通常位于后台运行,不需要与用户交

互,没有图形用户界面。

BroadcastReceiver

BroadcastReceiver是Android应用中另一个重要的组件,顾名思义,即为广播消息接收器。使用BroadcastReceiver组件接收广播消息比较简单,开发者只要实现自己的BroadcastReceiver子类,并重写onReceive(Context
context, Intent intent)方法即可。当其他组件通过sendBroadcast()等方法发送广播消息时,如果该BroadcastReceiver也对该消息"感兴趣"(通过IntentFilter配置),BoradcastReceiver的onReceive(Context context, Intent intent)方法将被触发。

开发者实现了自己的BroadcastReceiver之后,通常有两种方式来注册这个系统系的“事件监听器”。

1、在Java代码中通过Context.registReceiver()方法注册BroadcastReceiver;

2、在AndroidManifest.xml文件中使用<receiver.../>元素完成注册。

ContentProvider

Android系统为跨应用数据交换提供了一个标准:ContentProvider。当用于实现自己的ContentProvider时,需要实现如下抽象方法:

insert(Uri, ContentValues):向ContentProvider插入数据;

delete(Uri, ContentValues):删除ContentProvider中指定的数据;

update(Uri, ContentValues, String, String[]):更新ContentProvider中指定的数据;

query(Uri, String[], String, String[], String):从ContentProvider查询数据。

通常与ContentProvider结合使用的是ContentResover,一个应用程序使用ContentProvider暴露自己的数据,而另一个应用程序通过ContentResover来访问数据。

Intent和IntentFilter

严格来讲,Intent并不是一个Android应用的组件,但它对Android应用的作用非常大,它是Android应用内不同组件通信的载体。当Android运行时需要连接不同组件时,就要借助于Intent来实现。Intent可以启动应用中的另一个Activity,也可以启动一个Service组件,还可以发送一条广播信息来触发系统中的BroadcastReceiver组件。也就是说,Activity、Service和BroadcastReceiver三种组件之间的通信都以Intent作为载体。

IntentFilter则通过Intent匹配条件启动相应的组件。



【上篇】
【下篇】

抱歉!评论已关闭.