Android程序设计基础

Android程序结构

项目目录结构

image-20210506193325810
  1. src目录

    source的简写,存放源文件的目录,即写有代码的以java为后缀的文件。

  2. res目录

    存放项目中的资源文件并将编译进应用程序中,包括图片、字符串、菜单、界面布局、样式等等。在向此目录添加的资源文件,都会被gen/R.java自动记录。

  3. gen目录

    取自Generated Java Files的前3个英文单词,存放ADT自动生成的java文件,例如R.java和BuildConfig.java文件。这个目录中的文件不建议作任何的改动,否则会出错,或ADT会再次自动生成。

  4. bin目录

    该目录存放编译器编译之后产生的所有文件。包括dex文件(java编译后生成的java字节码文件)、resources.ap_(所有资源文件的集合,实际上是zip格式)、dexedLibs(对应libs中引用的jar包)和可执行apk文件等等。一个apk文件内包含被编译的代码文件(.dex文件)、文件资源(res)、assets、证书(certificates)和清单文件(manifest file),它基于zip文件格式。

  5. assets目录

    该目录用来存放原始格式的文件,例如音频文件、视频文件等二进制格式文件。此目录中的资源不能被R.java文件索引,所以只能以字节流的形式读取。一般情况下该目录为空。

  6. lib目录

    lib是libraries的缩写,存放程序中引用到的库,和bin/dexedLibs里面的目录是一致的。比如要给一个应用加入广告,只要将广告商提供的jar文件导入到该目录下,调用该jar里的相应方法就可以在程序中嵌入广告了。

  7. AndroidManifest.xml文件

    该文件是Android项目的全局配置文件,记录应用中使用到各种全局的配置,是每个 android程序中必须的文件。它位于整个项目的根目录下,描述了程序中的全局数据,包括程序中用到的组件(activities、services等等),以及它们各自的实现类,各种能被处理的数据和启动位置等重要信息。

  8. ic_launcher-web.png文件

    这是为了google Play市场使用展示的图标,它需要的是512×512的高分辨率图标。

  9. proguard-project.txt和project.properties文件

    这两个文件是为了保护Android项目而做的代码混淆使用的。

Android核心组件

Activity

​ Activity的整个生命周期中有活动、暂停、停止和非活动四种状态。活动状态,是在栈顶的Activity,它是可视的、有焦点、可接受用户输入。Android试图尽最大可能保持它活动状态,杀死其它Activity来确保当前活动Activity有足够的资源可使用。当另外一个Activity被激活时,它将被暂停。暂停状态,当Activity失去焦点,但仍然可见的状态,如被一个透明或者非全屏的Activity遮挡。若Activity变为完全隐藏,它将会变成停止状态。这时Activity仍然在内存中保存它所有的信息。停止状态的Activity将优先被终止,因此Activity停止后一个很重要的工作就是要保存好程序数据和UI状态。一旦Activity被用户关闭,以及暂时或停止状态的Activity被系统终止后,Activity便进入到非活动状态,它将被移除Activity栈。

Service

​ Service是Android系统中一个非常重要的应用程序组件。Service的最大特点是它不可见,没有像Activity那样华丽的图形化界面。这也是与Activity相比最大的区别。Service在程序后台运行,拥有自己独立的生命周期,通常用来处理一些耗时长的操作。可以使用Service更新ContentPrivider,发送Intent以及启动系统的通知等等。但是Service不是一个单独的进程。也不是一个线程,如果Service里的代码阻塞了,会导致整个应用程序无响应。每一个Service在使用前与Activity一样,要在AndroidManifest.xml文件里进行声明。

BroadcastReceiver

​ BroadcastReceiver是Android程序中的另一个重要的组件,其意为广播接收器,作用在于接收并响应Android应用中产生的各种广播消息。比如,当手机收到一条短信的时候,这时候就会产生一个收到短信的事件。它会向所有与它有关的已经注册的广播接收器广播这个事件。大部分广播消息是由系统产生的,例如时区改变、电池电量低和语言选项改变等等。使用广播接收器就必须先声明,它有两种声明的方法,一种是在AndroidManifest.xml文件里声明,另一种是用Java代码中的registReceiver()方法。

ContentProvider

​ 在Android中,每一个应用程序运行在各自的进程中。当一个程序需要访问另一个应用程序的数据时,即在不同的虚拟机之间进行传递数据时,可以借助ContentProvider实现数据的交换,达到在不同的应用程序之间共享数据。

Intent、IntentFilter

​ Intent是一种轻量级的消息传递机制,这种消息描述了应用中一次操作的动作、动作涉及数据、附加数据。Android系统根据此Intent的描述,负责找到对应的组件,并将 Intent传递给调用的组件,并完成组件的调用。

​ Intent对象包含要接收此Intent组件需要的信息(例如需要的动作和动作需要的信息)和 android 系统需要的信息(要处理此Intent的组件的类别和怎样启动它)。每个组成部分都有相应的属性表示,并提供设置和获取相应属性的方法,

image-20210506195522992

​ 一个intent filter是一个IntentFilter类的实例。但是android系统必须在组件未启动的情况下就知道它的能力,因此intent filter一般不会在java代码中设置,而是在应用的AndroidManifest.xml文件中作为元素的方式声明。 Activity、Service和BroadcastReceiver可设置一个或者多个intent filter过滤器,来告诉Android系统哪个intent它们可以处理。每个过滤器描述了组件的一种能力,它过滤掉不想要的intent,留下想要的。

一个intent filter中包含一个intent对象中的三个属性Action、Data和Catrgory,而Extra和Flag等属性在这方面不起作用。

程序调试

ADB调试桥

​ adb的全称为Android Debug Bridge,是起到调试桥的作用,用来管理模拟器和真机的通用调试工具。该工具功能强大,直接通过命令行使用adb命令。通过adb我们可以在Eclipse中通过DDMS来调试Android程序,因此它是debug工具,借助它我们可以管理设备或手机模拟器的状态,还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。

Logcat调试

​ 异常也称为例外,是在程序运行中发生的、会打断程序正常执行的事件。Java类库包含了系统定义的常见异常类,例如 算术异常(ArithmeticException),如除数为0;没有给对象开辟内存空间时会出现空指针异常(NullPointerException);找不到文件异常(FileNotFoundException);数组访问下标越界(ArrayIndexOutOfBoundsException)等等。当然,用户程序中特定的异常也可以通过用户自定义的异常类来进行处理。

Dev Tools

​ Dev Tools是用于调试和测试的工具,隐藏在Android模拟器中的。Dev Tools它为我们提供了强大的调试支持,包括了一系列用户各种用途的小工具:Development Settings、Exception Browser、Google Login Service、Instrumentation、Media Scanner、Package Browser、Pointer Location、Raw Image Viewer、Running processes和Terminal Emulator等
ge Browser、Pointer Location、Raw Image Viewer、Running processes和Terminal Emulator等

如果觉得本文对你有帮助的话,不妨关注作者一波,小小的关注其实对我很重要。更多高质量内容与资料请访问:个人主页:修心的小屋

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值