- 浏览: 251870 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
caipeiming:
下面有个简单的例子JavaScript仿安卓实现toast m ...
Jquery 仿 android Toast效果 -
丁利星:
...
Jquery 仿 google 日历活动(图+源码) -
lehehe:
http://www.haoservice.com/docs/ ...
android 基站定位 -
hpuyancy:
你好,请问如果必须这样的话,那么其他用户如何根据wsdl文件创 ...
[原创]webservice 学习笔记,axis2传递简单对象,非stub方式 -
WilliamLiu:
[color=darkred][color=darkred][ ...
socket长连接的心跳包
前一段时间断断续续的看过几天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:资源目录
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
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。指定应用程序默认启动的Activity。
uses-sdk: 应用程序所使用的sdk版本。
该文不对的地方希望大家指正。该文参考了很多网上的其它文章,在此一并表示感谢。
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:资源目录
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 version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cheney.weiboo" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".IndexActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </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。指定应用程序默认启动的Activity。
uses-sdk: 应用程序所使用的sdk版本。
该文不对的地方希望大家指正。该文参考了很多网上的其它文章,在此一并表示感谢。
评论
2 楼
cheney_love
2011-11-17
BuN_Ny 写道
楼主英明!不过,android应用程序目录里的src是啥意思呀?
1 楼
BuN_Ny
2011-11-17
楼主英明!不过,android应用程序目录里的src是啥意思呀?
发表评论
-
centos6.3 安装openvpn 客户端
2012-11-12 14:57 4162Centos 默认是没有提供Openvpn的,而且在yum 的 ... -
发一个刚做的android小应用《每日口语》
2012-10-25 16:10 1001笔者也是一名英语学习的爱好者,为了学习英语用了半个多月的时间完 ... -
android eclipse 通过 wifi 连接 手机
2012-03-17 19:00 2260首先需要安装一个shell 终端 手机执行: 1 su//获取 ... -
android 阅读器(寻爱好者共同学习进步)
2012-03-07 12:35 1418用了十几天开发的一个android阅读器,最终想做成一个分享类 ... -
android开发注意事项
2012-02-07 10:15 1382感谢:http://blog.csdn.net/dragond ... -
游戏中的碰撞检测
2011-12-08 21:06 2394游戏中的碰撞检测方式 ... -
android 模拟器对应像素
2011-12-05 20:46 1414android 模拟器对应的像素,游戏开发需要了解 VGA: ... -
Android Matrix 详解
2011-12-04 20:55 771http://zensheno.blog.51cto.com/ ... -
android 模拟器不能上网问题
2011-11-15 11:23 1439解决Android模拟器DNS设置问题 用Android 模拟 ... -
android 《手机防盗》 图
2011-09-22 14:24 1176最近一直在学习android,并且做了一个简单应用来练手,总结 ... -
android 发送超长短信
2011-09-16 17:41 3416感谢:http://www.pocketdigi.com/20 ... -
Android中startActivity中的permission检测与UID机制
2011-09-12 21:44 1257感谢:http://yelinsen.iteye.com/bl ... -
android 之 音量调节
2011-09-02 15:27 1210感谢:原文作者 Android 程序获取、设置铃声和音量 ... -
android 基站定位
2011-09-01 17:15 1670感谢:http://www.devdiv.com/home.p ... -
StartService 和 bindService
2011-08-31 22:03 1082Service的生命周期方法比 ... -
android 手机信息获得
2011-08-29 21:05 1205感谢:http://jasonshieh.iteye.com/ ... -
android 之 SharedPreferences
2011-08-09 09:53 945感谢:http://hi.baidu.com/nubone/b ... -
android 之 handler
2011-08-08 22:41 875感谢:http://wsqwsq000.iteye.c ... -
android 之 广播相关
2011-08-08 14:01 1285感谢:http://www.devdiv.com/ ... -
android 之AndroidManifest.xml
2011-08-08 10:48 1082感谢:http://www.cnblogs.com/pilan ...
相关推荐
Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...
Android学习笔记 Android学习笔记 Android学习笔记
Android学习笔记
android 学习笔记(全全整理),吧android学习笔记全部整理下来了,可以去好好学习学习
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
第一行代码 android学习笔记 修改完整版
Android基础学习笔记,自己总结,适合初学者。
Android基础笔记 Android基础笔记 Android基础笔记 Android基础笔记
android 学习笔记 android 学习笔记 android 学习笔记
Android 开发学习笔记,学习android的好资料
自己整理的Android学习笔记 都是一些小细节,有用
学习java和android的笔记 更容易学习android 资深学习android 具有大量学习的笔记 很多的错误 都是从细节开始学习的
Android学习笔记,介绍怎么学习android。
Android学习笔记(十三) 碎片 完整源码
android学习笔记
Android学习笔记(1)-永远不变的Hello World Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。 SDK的下载...
Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...
Android学习笔记——获取网络图片并显示