Android简介

Android系统架构

(图片源自维基百科)

Android大致分为四层架构,五块区域。

  1. Linux内核层

Android系统基于Linux2.6,这一层为Android设备的各种硬件提供底层的驱动,如显示驱动,银屏驱动,照相机驱动,蓝牙驱动等。

  2. 系统运行库层

通过一些C/C++库来为Android系统提供主要的特性支持

同样在这一层还有Android运行时库,它提供了一些核心库,允许开发者使用java语言来编写Android应用。另外Android运行时库还包含了Dalvik虚拟机,使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。

  3. 应用框架层

主要提供了构建应用程序时可能用到的各种API

  4. 应用层

所有安装在手机上的应用程序都属于这一层

Android四大组件

Android系统四大组件是活动(Activity),服务(Service),

广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。

Android项目目录结构

  1. src

src目录是放置所有Java代码的地方

  2. gen

这个目录里的内容都是自动生成的,主要有一个R.java文件。在项目中添加的任何资源都会在其中生成一个相应的资源id。这个文件永远不要手动去修改它。

  3. assets

主要可以存放一些随程序打包的文件,在程序运行时可以动态读取到这些文件的内容。另外如果在程序中使用到了WebView加载本地网页的功能,所有网页相关的文件也都放在这个目录下

  4. bin

包含了一些在编译时自动生成的文件,其中会有一个当前项目编译好的安装包(.apk)

  5. libs

如果项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包会自动添加到构建路径里去。

  6. res

在项目中使用到的所有图片,布局,字符串等资源文件都要存放在这个目录下,R.java中的内容也是根据这个目录下的文件自动生成的。

  7. AndroidManifest.xml

这是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册。另外还可以在这个文件中给应用程序添加权限声明。

  8. project.properities

通过一行代码制定了编译程序时所使用的SDK版本

Android项目中的资源

  1. 以values开头的文件都是用来放字符串的。

  以drawable开头的文件都是用来放图片的。

  以layout开头的文件都是用来放布局的。

  以menu开头的文件都是用来放菜单文件的。

  如果美工只提供一份图片,就把所有图片放在drawable-hdpi文件夹下。

  2. Android程序的设计讲究逻辑和视图的分离,因此不推荐在活动中直接编写界面,更通用的一种做法是,在布局文件中编写界面,然后在活动中引入进来。

  3. Android不推荐在程序中对字符串进行硬编码,更好的一般做法是把字符串定义在res.values.strings.xml里,然后在布局文件或代码中引用。

  4. 引用字符串的两种方式

在代码中通过R.string.hello_world可以获得该字符串的引用

在XML文件中通过@string/hello_world可以获得该字符串的引用

Android的日志工具Log

  1. Android的日志工具是Log(android.util.Log),这个类提供了如下几个方法(方法中传入两个参数,第一个参数是tag,一般传入当前的类名就好,主要用于对打印信息进行过滤。第二个参数是msg,即想要打印的具体内容):

1)    Log.v()

打印最为琐碎的,意义最小的日志信息

2)    Log.d()

打印一些调剂信息

3)    Log.i()

打印一些比较重要的数据

4)    Log.w()

打印一些警告信息,提示程序在这个地方可能会有潜在的风险

5)    Log.e()

打印程序中的错误信息

  2. 如果LogCat中没有打印出任何信息,有可能是因为你当前的设备失去焦点了,这是你只需进入DDMS视图,在Devices窗口中点击一下你当前的设备,打印信息就会出来。

  3. 使用Log而不使用System.out打印日志

System.out打印日志不可控制,打印时间无法确定,不能添加过滤器,日志没有级别区分

最新文章

  1. TCP/IP之TCP_NODELAY与TCP_CORK
  2. js 睡觉
  3. 关于 JavaScript prototype __proto__ 一点总结
  4. Android AbsListView 的item动画类库 —— JazzyListView
  5. Java数据结构——用链表实现栈
  6. Show "Appear Offline" in Lync
  7. LayoutInflater
  8. shell脚本实现检測回文字符串
  9. SDL Game Development InputHandler类的一处bug
  10. (转) xcodebuild和xcrun自动化编译ipa包 笔记
  11. java 请求响应乱码
  12. 多态性Polymorphism
  13. OSD的主要实现方法和类型(转)
  14. Codeforce A. Quasi-palindrome
  15. iOS.ObjC.__attribute__-directives
  16. TZOJ 4602 高桥和低桥(二分或树状数组+二分)
  17. 关于aspx.designer.cs
  18. pt-heartbeat(percona toolkit)
  19. java面向对象课程设计-数学表达式计算器
  20. BitmapUtil(高效压缩不失真)

热门文章

  1. [Day1] 初识Nginx
  2. kafka例子程序
  3. 在PyCharm中导入Numpy和Pygame模块 (win8.1)
  4. 【Java爬虫】爬取南通大学教务处成绩
  5. Stream的去重排序
  6. [BZOJ3990][SDOI2015][LOJ#2181]-排序
  7. 个人站长建议直接封掉的IP地址列表
  8. DTD约束与schema约束的不同
  9. JSP-request(httpServletRequest)
  10. 初探Druid