Android应用程序的目录结构
src目录:存放的是项目的源代码;
gen目录:ADT自动生成的,不需要人为地修改;
assets目录:存放项目相关的资源文件;在程序中可以使用"getResources.getAssets().open("test.txt")"得到资源文件的输入流InputStream对象;
res目录:存放应用程序中经常使用的资源文件,包括图片、声音、布局文件及参数描述文件等,以drawable开头的三个文件夹用于存储.png、.9.png 、.jpg等图片资源;
AndroidManifest.xml文件:应用程序的系统控制文件;
default.properties文件:默认的配置文件。
Android基本组件的介绍:
应用程序的生命周期:
前台进程:当前正在前台运行的进程,最重要的进程;除非系统的内存已经到不堪重负的情况,否则系统是不会中止该进程;
可见进程:一般还是显示在屏幕中,但是用户并没有直接与之进行交互,非常重要;除非为了保证前台进程的正常运行,否则Android系统一般是不会将该进程中止的;
服务进程:拥有Service的进程,该进程一般是在后台为用户服务的;一般情况下,Android系统是不会将其中断的,除非系统的内存已经达到崩溃的边缘,必须通过释放该进程才能保证前台进程的正常运行,才可能将其中止;
后台进程:一般对用户作用不大,缺少该进程并不会影响用户对系统的体验;如果系统需要中止某个进程才能保证系统正常运行,那么会有非常大的几率将该进程中止;
空进程:对用户没有任何作用的进程,该进程一般是为缓存机制服务的,当系统需要中止某个进程以保证系统的正常服务时,会首先将该进程中止。
Activity的七个生命周期:
onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart。
Service:是一个具有较长的生命周期但是没有用户界面的程序,一般由Activity启动,但是并不依赖于Activity,即当Activity的生命周期结束时,Service仍然会继续运行,直到自己的生命周期结束为止。Service的启动方式有两种:startService和bindService。
BroadcastReceiver:为用户接收广播通知的组件,当系统或某个应用程序发送广播时,可以使用BroadcastReceiver组件来接收广播消息并做相应处理。发送广播的三个方法:Context.sendBroadcast()、sendOrderedBroadcast()和sendStickyBroadcast()。
ContentProvider:用来实现应用程序之间数据共享的类。当需要进行数据共享时,一般利用Content Provider为需要共享的数据定义一个URI,然后其他应用程序通过Context获得ContentResolver并将数据URI传入即可。访问共享资源时,需要为应用程序添加适当的权限。
Intent和IntentFilter:
Intent是一种运行时的绑定机制,在应用程序运行时连接两个不同的组件。一般的应用是通过Intent向Android系统发出某种请求,然后Android系统会根据请求查询各个组件声明的IntentFilter,找到需要的组件并运行它。
Activity、Service及BroadcastReceive组件之间的通信全部使用的是Intent,但是各个组件使用的Intent机制不同。
(1)Activity组件:激活一个Activity组件时,需要调用Context.startActivity()或Context.startActivityForResult()方法来传递Intent;
(2)Service组件:启动或绑定Service组件时,会通过Context.startService()和
Context.bindService()实现Intent的传递;
(3)BroadcastReceive组件:一般通过Context.sendBroadcast()、sendOrderedBroadcast()和sendStickyBroadcast()方法传递的,当BroadcastIntent被广播后,所有IntentFilter过滤条件满足的组件都将被激活。
Intent是由组件名称、Action、Data、Category、Extra及Flag六部分组成。
(1)组件名称:实际上就是一个ComponentName对象,用于标识唯一的应用程序组件;
(2)Action:实际上是一个描述了Intent所触发动作名称的字符串,已经定义好很多字符串常量来表示不同的Action,也可以自定义Action。
系统定义的常见Action:
Action_CALL:拨打Data里面封装的电话号码;
Action_EDIT:打开Data里指定数据所对应的编辑程序;
Action_VIEW:打开能够显示Data中封装的数据的应用程序;
Action_MAIN:声明程序的入口,该Action并不会接收任何数据,同时结束后也不会返回任何数据;
Action_BOOT_COMPLETED:BroadcastReceive Action的常量,表示系统启动完毕;
Action_TIME_CHANGED:BroadcastReceive Action的常量,表示系统时间通过设置而改变。
(3)Data:主要是对Intent消息中数据的封装,主要描述Intent的动作所操作到的数据的URI及类型。不同类型的Action会有不同的Data封装,例如打电话的Intent会封装tel://格式的电话URI,而ACTION_VIEW的Intent中Data则会封装http://格式的URI。
(4)Category:是对目标组件类别信息的描述。与Category相关的方法有三个:addCategory添加一个Category,removeCategory删除一个Category和getCategory得到一个Category。Android系统定义了一组静态字符常量来表示Intent的不同类型。
系统定义的常见Category:
CATEGORY_GADGET:表示目标Activity是可以嵌入到其他Activity中的;
CATEGORY_HOME:表示目标Activity为HOME Activity;
CATEGORY_TAB:表示目标Activity是TabActivity的一个标签下Activity;
CATEGORY_LAUNCHER:表示目标Activity和应用程序中最先被执行的Activity;
CATEGORY_PREFERNCE:表示目标Activity是一个偏好设置的Activity。
(5)Extra:封装了一些额外的附加信息,这些信息是以键值对的形式存在的。Intent可以通过putExtras()与getExtras()方法来存储和获取Extra。在Android系统的Intent类中,定义了常见的Extra键值。
系统定义的常见Extra:
EXTRA_BCC:装有邮件密送地址的字符串数组;
EXTRA_EMAIL:装有邮件发送地址的字符串数组;
EXTRA_UID:使用ACTION_UID_REMOVED动作时,描述删除用户的id;
EXTRA_TEXT:当使用ACTION_SEND动作时,描述要发送文本的信息。
IntentFilter实际上相当于Intent的过滤器,一个应用程序开发完成后,需要告诉Android系统自己能够处理哪些隐性的Intent请求,这就需要说明IntentFilter。
IntentFilter过滤Intent时,一般是通过Action、Data及Category三方面进行检测的。
相关推荐
Android应用的构成 Android应用的构成 Android应用的构成 Android应用的构成 Android应用的构成 Android应用的构成 Android应用的构成 Android应用的构成 Android应用的构成
描述android系统结构和应用程序机制的资料
1.3 Android应用程序构成 1.3.1 活动(Activity) 1.3.2 意图(Intent) 1.3.3 服务(Service) 1.3.4 内容提供器(ContentProvider) 1.4 Android网上资源 第2章 搭建Android开发环境 2.1 Android开发环境要求 2.2 ...
CiyaShop v5.14 -基于WooCommerce的原生Android应用程序 CiyaShop原生Android应用程序是您的购物业务或您的客户购物商店作为代理或自由职业者的完美解决方案。它吸引消费者构成忠诚与尖锐的设计和功能,这对网上商店...
Android中文学习资料大全 随便列几个 andbook中文版 [publish][1].pdf Android帮助文档(第二部分)开发工具.doc ...Android 应用程序构成.pdf Android 应用程序模块 应用, 任务, 进程, 和线程.pdf 等等。。。不一一列出
3、Android应用程序结构剖析 8 3.1 Android的API 8 3.2 Android应用程序结构解析 9 3.2.1活动 9 3.2.2意图接收器 10 3.2.3服务 11 3.2.4内容提供者 11 3.3 Intent的详细解析 11 3.3.1 Intent的抽象描述 11 3.3.2 ...
Android的消息传递和并发框架(与Binder IPC机制一起)构成了所有Android应用程序和服务的基础。 消息传递和并发框架主要基于Thread,Looper,Message,MessageQueue和Handler类。 为了方便起见,还有AsyncTask类,...
2.3.4 实践演练——演示编译Android程序的两种方法 43 2.4 编译Android kernel 47 2.4.1 获取goldfish内核代码 47 2.4.2 获取msm内核代码 50 2.4.3 获取omap内核代码 50 2.4.4 编译Android...
3、Android应用程序结构剖析 8 3.1 Android的API 8 3.2 Android应用程序结构解析 9 3.2.1活动 9 3.2.2意图接收器 10 3.2.3服务 11 3.2.4内容提供者 11 3.3 Intent的详细解析 11 3.3.1 Intent的抽象描述 11 3.3.2 ...
第3章 android应用程序结构剖析 9 3.1 Android的API 9 3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细解析 12 3.3.1 Intent的抽象描述 12 ...
Android运行时从下到上又包括了HAL层、应用程序框架层和应用程序层。HAL层主要是为规避GPL而设计的,它将将硬件驱动分成内核空间和用户空间两部分,其中用户空间两部分采用的是商业友好的Apache License。应用程序...
从这里开始 安装SDK 更新SDK 开发与调试 Hello Android 应用程序解析 记事本教程 开发工具 应用程序模型 应用程序生命周期 开发应用程序 用户界面工具 应用构成部分 数据存储与取回 安全模型 资源管理与多国版本 ...
本文目标有二:一是讲解从Android Studio角度看,一个Android应用程序的项目由哪几部分构成;二是剖析程序是怎么运行的。
第3章 android应用程序结构剖析 9 3.1 Android的API 9 3.2 Android应用程序结构解析 10 3.2.1 活动 10 3.2.2 意图接收器 11 3.2.3 服务 11 3.2.4 内容提供者 11 3.3 Intent的详细解析 12 3.3.1 Intent的抽象描述 12 ...
第2章 Android应用程序的构成 2 1 Android应用程序的解析 2 1 1 目录结构 2 1 2 资源的管理与使用 2 1 3 AndroidManifest xml简介 2 1 4 应用程序的权限 2 2 Android基本组件的介绍 2 2 1 应用程序的生命周期 2 2 2 ...
android系统框架介绍,Android系统 = Linux内核 + Android运行时。...Android运行时从下到上又包括了HAL层、应用程序框架层和应用程序层。HAL层主要是为规避GPL而设计的,它将将硬件驱动分成内核空间和用户空间两部分
Android社交分享平台——口袋微博,Android应用程序的构成,Android常用基本控件,Android事件处理模型,消息广播与服务,手机通信功能开发,桌面组件与多媒体数据采集,Google服务,Android地图搜索应用——美食...
Android社交分享平台——口袋微博,Android应用程序的构成,Android常用基本控件,Android事件处理模型,消息广播与服务,手机通信功能开发,桌面组件与多媒体数据采集,Google服务,Android地图搜索应用——美食...
Android社交分享平台——口袋微博,Android应用程序的构成,Android常用基本控件,Android事件处理模型,消息广播与服务,手机通信功能开发,桌面组件与多媒体数据采集,Google服务,Android地图搜索应用——美食...
Android社交分享平台——口袋微博,Android应用程序的构成,Android常用基本控件,Android事件处理模型,消息广播与服务,手机通信功能开发,桌面组件与多媒体数据采集,Google服务,Android地图搜索应用——美食...