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的七个生命周期

onCreateonStartonResumeonPauseonStoponDestroyonRestart

Service是一个具有较长的生命周期但是没有用户界面的程序,一般由Activity启动,但是并不依赖于Activity,即当Activity的生命周期结束时,Service仍然会继续运行,直到自己的生命周期结束为止。Service的启动方式有两种:startServicebindService

BroadcastReceiver为用户接收广播通知的组件,当系统或某个应用程序发送广播时,可以使用BroadcastReceiver组件来接收广播消息并做相应处理。发送广播的三个方法:Context.sendBroadcast()sendOrderedBroadcast()sendStickyBroadcast()

ContentProvider用来实现应用程序之间数据共享的类。当需要进行数据共享时,一般利用ContentProvider为需要共享的数据定义一个URI,然后其他应用程序通过Context获得ContentResolver并将数据URI传入即可。访问共享资源时,需要为应用程序添加适当的权限。

IntentIntentFilter

Intent是一种运行时的绑定机制,在应用程序运行时连接两个不同的组件。一般的应用是通过IntentAndroid系统发出某种请求,然后Android系统会根据请求查询各个组件声明的IntentFilter,找到需要的组件并运行它。

ActivityServiceBroadcastReceive组件之间的通信全部使用的是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是由组件名称、ActionDataCategoryExtraFlag六部分组成。

1)组件名称:实际上就是一个ComponentName对象,用于标识唯一的应用程序组件;

2Action:实际上是一个描述了Intent所触发动作名称的字符串,已经定义好很多字符串常量来表示不同的Action,也可以自定义Action

系统定义的常见Action

Action_CALL:拨打Data里面封装的电话号码;

Action_EDIT:打开Data里指定数据所对应的编辑程序;

Action_VIEW:打开能够显示Data中封装的数据的应用程序;

Action_MAIN:声明程序的入口,该Action并不会接收任何数据,同时结束后也不会返回任何数据;

Action_BOOT_COMPLETEDBroadcastReceiveAction的常量,表示系统启动完毕;

Action_TIME_CHANGEDBroadcastReceiveAction的常量,表示系统时间通过设置而改变。

3Data:主要是对Intent消息中数据的封装,主要描述Intent的动作所操作到的数据的URI及类型。不同类型的Action会有不同的Data封装,例如打电话的Intent会封装tel://格式的电话URI,而ACTION_VIEWIntentData则会封装http://格式的URI

4Category:是对目标组件类别信息的描述。与Category相关的方法有三个:addCategory添加一个CategoryremoveCategory删除一个CategorygetCategory得到一个CategoryAndroid系统定义了一组静态字符常量来表示Intent的不同类型。

系统定义的常见Category

CATEGORY_GADGET:表示目标Activity是可以嵌入到其他Activity中的;

CATEGORY_HOME:表示目标ActivityHOMEActivity

CATEGORY_TAB:表示目标ActivityTabActivity的一个标签下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时,一般是通过ActionDataCategory三方面进行检测的。

更多相关文章

  1. Android(安卓)混合了 JSON 的 Android(安卓)应用程序
  2. android push机制-C2DM
  3. Android(安卓)自定义view(二) 如何实现自定义组件
  4. android体系架构
  5. Android(安卓)WheelView(滑轮组件)使用
  6. Android性能优化——合理进行内存管理
  7. 常用Android应用程序中的Intent动作
  8. Android(安卓)- ToDoList 详解
  9. Android系统架构

随机推荐

  1. android ObjectAnimator基本应用
  2. 获取Android所有的应用和包名 点击跳转已
  3. Android的StatusBar分析
  4. Android之ADB常用命令
  5. Android的Handler常见的面试问题
  6. Android(安卓)常用mimeType表
  7. Android中IDE、ADT、SDK、JDK、NDK的含义
  8. Android加载通话记录流程分析
  9. Android(安卓)onSaveInstanceState和onpa
  10. Android:xUtils3 浅析(二)——数据库模块