为什么80%的码农都做不了架构师?>>>   

前一段时间断断续续的看过几天android,由于不连贯,效果不是很好,最近打算用一个月的时间系统的学习一下。

1、android的生态系统  
Android是由Google在2007年推出的一个开源系统平台,主要针对移动设备市场,现在的最新版本是Android 3.2,android底层基于精简优化过的Linux kernel 2.6。android系统架构如图:

 
从图上可以看出来,整个系统分为4层 
(1)、Linux Kernel 
       该层是使用google自己精简优化过的linux系统,使其更适合内存和电量有限的移动设备 
主要是负责系统底层的内存管理,安全管理,进程调度以及硬件进行通讯等等,并对其上层提供服务。 
(2)、android Runtime  
      包含两部分: 
      1、core Libraries(核心库),该核心库提供大部分在Java编程语言核心类库中可用的功能。 
     2、Dalvik 虚拟机。Dalvik是Google公司自己设计用于Android平台的Java虚拟机,Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。  
     Dalvik和JVM的几点区别 
      1、Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。 
     2、Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。 
     3、Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。 
     4、不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式Dex,ex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。 
     5、所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制  
(3)、Libraries  
    Android包含一个C/C++库的集合,供Android系统的各个组件使用。例如: 
    libc:这是系统的C库,Media Framework: 媒体库,SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕,WebKit,浏览器内核等不同的库。供上层调用 
(4)、Application Framework  
    应用程序框架,也是我们开发的时候打交道最多的,给我们提供里丰富多彩的应用程序API,通过这些我们可以做出丰富多彩的应用。 
   Activity Manager(活动管理器),主要负责程序生命周期的管理。 
   Content Providers (内容提供者),使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据 
   Resource Manager (资源管理器),提供访问非代码资源,如本地化字符串、图形和布局文件 
   View (试图),丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器 
(5)Applications  
   四层中的最上层,在系统中安装的应用程序,就位于该层,我们以后写的程序也基本在该层运行,全部由Java语言编写,当然Android也允许用户使用C和C++编写程序的。 
  
2、android应用程序的目录结构  
 
1、src  : 没什么好说的,就是我们的源代码了 
2、gen  : 不知道gen是不是generate的缩写,gen目录存放系统自动维护的一些文件,主要是 R.java。R文件由ADT自动维护,主要是为res目录下面的xml,图像,媒体等文件同步生成一个类似字典的东西,系统中对这些资源的引用可以通过R文件来操作。在编译的时候会对R文件进行检查,如果R文件中没有引用的资源不会被编译打包,以节省系统资源,另外,R文件只有一个,我们不需要也不要去改里面的内容。 
3、assets :assets也是一个资源文件夹,assets中的资源可以被打包到程序里面,和Res不同的地方是,ADT会为res下面的文件在R文件中生成一个ID,而不会为assets中的资源生成ID,因此要使用该目录下面的文件,需要通过完整路径的方式进行调用。(该目录下面的文件不会被编译,直接复制到程序安装包中) 
4、res :资源目录(我们不能在Res目录下面建立自定义目录,以及为已有的目录建立子目录) 
      drawable: 主要存放不同分辨率的图片文件 
             (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA480x854) 
           (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) 
           (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320) 
      layout: 存放用于布局的xml文件 
      values: 用于存放一些常量(不同类型的变量存放在不同的文件中) 
               strings.xml 定义字符串和数值 
               arrays.xml 定义数组 
               colors.xml 定义颜色和颜色字串数值 
               dimens.xml 定义尺寸数据 
               styles.xml 定义样式 
      anim: 存放一些和动画有关的xml文件 
      xml: 存放一些自定义的xml文件 
      raw: 该目录下面的文件不会被编译,直接复制到程序安装包中。

5、AndroidManifest.xml

Xml代码   
  1. <?xml version="1.0" encoding="utf-8"?>
  2. lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.cheney.weiboo"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdk android:minSdkVersion="4" />
  7. <application android:icon="@drawable/icon" android:label="@string/app_name">
  8. <activity android:name=".IndexActivity"
  9. android:label="@string/app_name">
  10. <intent-filter>
  11. <action android:name="android.intent.action.MAIN" />
  12. <category android:name="android.intent.category.LAUNCHER" />
  13. </intent-filter>
  14. </activity>
  15. </application></manifest>

xmlns:android:包含命名空间的声明。xmlns:android="http://schemas.android.com/apk/res/android",使得Android中各种标准属性能够在文件中使用,提供大部分元素的数据。 
package:声明应用程序包。 
application:包含package中application级别组件声明的根节点。此元素耶可包含application的一些全局和默认的属性,如标签、icon、主题、必要权限等。一个manifest能够包含零个或一个此元素,不能大于一个。 
android:icon:应用程序图标。 
android:lebel:应用程序名字。 
Activity:注册系统中的activity,所有的activity都要在此文件中注册。 
android:name:activity的名字,即类名。 
intent-filter:声明了指定一组组件支持的Intent值,从而形成IntentFilter。 
action:组件支持的Intent action 。 
category:组件支持的Intent Category。 
uses-sdk: 应用程序所使用的sdk版本。

转载于:https://my.oschina.net/AStar/blog/67156

Android 学习笔记【基础扫盲篇】相关推荐

  1. Android学习笔记第五篇--网络连接与云服务(一)

    Android学习笔记第五篇–网络连接与云服务 第一章.无线连接设备 ​ 除了能够在云端通讯,Android的无线API也允许在同一局域网内的设备通讯,**甚至没有连接网络,而是物理具体相近,也可以相 ...

  2. 经典再现,看到就是赚到。尚硅谷雷神 - SpringBoot 2.x 学习笔记 - 基础入门篇

    SpringBoot 2.x 时代 – 基础入门篇 视频学习地址:https://www.bilibili.com/video/BV1Et411Y7tQ?p=112&spm_id_from=p ...

  3. 设计模式学习笔记-基础知识篇

    1. 设计模式的重要性 1.1 设计模式解决的是在软件过程中如何来实现具体的软件功能.实现同一个功能的方法有很多,哪个设计容易扩展,容易复用,松耦合,可维护?设计模式指导我们找到最优方案. 1.2 设 ...

  4. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  5. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  6. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  7. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  8. MySQL学习笔记-基础篇2

    MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...

  9. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  10. Android学习路线_工具篇(一)简单的编辑器

    工欲善其事,必先利其器.工具,是人类进化的一大助力,善于制造与使用工具,可以加快我们学习的速度.工具在人类的进化之路上随着人类共同进化,原始的人类需要的是原始的工具,先进的工具对于原始人来说也许是个占 ...

最新文章

  1. gpio的8种工作模式_【超低功耗系列一】STM32L 低功耗产品和模式
  2. LeetCode算法题10:DFS/BFS-扫雷游戏
  3. matlab intergral,matlab學習:人臉識別之HOG(Histograms of Oriented Gradients)
  4. 基础004_V7-DSP Slice
  5. JavaScript学习随记——错误类型
  6. 重学java基础第十六课:jdk jre jvm
  7. python socket 大文件_python:socket传输大文件示例
  8. 文件上传控件 css,CSS3 自定义文件上传输入控件界面
  9. Scrapy 和 scrapy-redis的区别
  10. 埃及分数(codevs 1288)
  11. iPhone第二季度在美销量降23%,但iPhone SE有亮点
  12. 【kafka】服务器上Kafka启动 Cannot allocate memory
  13. SpringCloud下的springboot工程,访问jsp页面报404问题
  14. 安卓接入高德地图3dmap黑屏问题解决
  15. CCS12.0 安装并设置中文
  16. php chinese.php,ChineseUtil
  17. Android平台车牌识别开发手册
  18. 我们都知道李、张、王、刘是四大姓氏,那么四小姓氏你知道几个?
  19. TNS-12555: TNS:permission denied错误解决
  20. c语言stl用法,C STL快速入门!学习使我快乐

热门文章

  1. 你真的理解反向传播吗?面试必备
  2. 刚刚,自动驾驶路测国家规范出台:无人车即将开上更多实际道路
  3. C++中menset用法
  4. windows安装php和mysql
  5. 于是,我们给前端分享会定义了一个未定义的名字
  6. PHP常用的数组相关处理函数
  7. rtems源码树结构
  8. GetConsoleWindow was not declared in this scope
  9. 记录接触过的开源与非开源
  10. 实时计算Flink 快速入门 —— 步骤二:注册上下游存储