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从0开始之基础篇(1)-Android的四大基本组件
  2. Android WheelView(滑轮组件)使用
  3. Android中有用的组件被选中和按下去的变换样式

随机推荐

  1. android实现uc和墨迹天气那样的左右拖动
  2. 36个Android开发常用代码片段
  3. Android SlidingMenu 开源项目 侧拉菜单
  4. android利用javamail实现后台发送可添加
  5. Android onTouchEvent事件
  6. Android Studio编译动态替换清单文件Andr
  7. 得到email的地址
  8. android adb shell 不可用的情况
  9. 短视频带货源码,获取本地图片,并保存到bean
  10. Android(安卓)10动态申请读写权限