- 浏览: 257183 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 4240Centos 默认是没有提供Openvpn的,而且在yum 的 ... -
发一个刚做的android小应用《每日口语》
2012-10-25 16:10 1076笔者也是一名英语学习的爱好者,为了学习英语用了半个多月的时间完 ... -
android eclipse 通过 wifi 连接 手机
2012-03-17 19:00 2307首先需要安装一个shell 终端 手机执行: 1 su//获取 ... -
android 阅读器(寻爱好者共同学习进步)
2012-03-07 12:35 1470用了十几天开发的一个android阅读器,最终想做成一个分享类 ... -
android开发注意事项
2012-02-07 10:15 1420感谢:http://blog.csdn.net/dragond ... -
游戏中的碰撞检测
2011-12-08 21:06 2433游戏中的碰撞检测方式 ... -
android 模拟器对应像素
2011-12-05 20:46 1483android 模拟器对应的像素,游戏开发需要了解 VGA: ... -
Android Matrix 详解
2011-12-04 20:55 831http://zensheno.blog.51cto.com/ ... -
android 模拟器不能上网问题
2011-11-15 11:23 1470解决Android模拟器DNS设置问题 用Android 模拟 ... -
android 《手机防盗》 图
2011-09-22 14:24 1210最近一直在学习android,并且做了一个简单应用来练手,总结 ... -
android 发送超长短信
2011-09-16 17:41 3457感谢:http://www.pocketdigi.com/20 ... -
Android中startActivity中的permission检测与UID机制
2011-09-12 21:44 1287感谢:http://yelinsen.iteye.com/bl ... -
android 之 音量调节
2011-09-02 15:27 1240感谢:原文作者 Android 程序获取、设置铃声和音量 ... -
android 基站定位
2011-09-01 17:15 1720感谢:http://www.devdiv.com/home.p ... -
StartService 和 bindService
2011-08-31 22:03 1138Service的生命周期方法比 ... -
android 手机信息获得
2011-08-29 21:05 1247感谢:http://jasonshieh.iteye.com/ ... -
android 之 SharedPreferences
2011-08-09 09:53 991感谢:http://hi.baidu.com/nubone/b ... -
android 之 handler
2011-08-08 22:41 915感谢:http://wsqwsq000.iteye.c ... -
android 之 广播相关
2011-08-08 14:01 1323感谢:http://www.devdiv.com/ ... -
android 之AndroidManifest.xml
2011-08-08 10:48 1130感谢:http://www.cnblogs.com/pilan ...
相关推荐
"Android学习笔记" Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中...
Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...
Android基础学习笔记主要涵盖了一系列关于Android开发的基本概念和关键组件,以下是这些知识点的详细解析: 1. **Activity**: 是Android应用程序的基本单元,它代表用户在屏幕上看到的一个界面。每个Activity都必须...
Android 基础笔记 Android 基础笔记是 Android 开发的入门知识点总结,涵盖了 Android 开发的基础知识点,从 Android 发展史到自定义 ContentProvider 的实现。 一、Android 发展史 Android 的发展史可以追溯到 ...
### Android开发学习笔记 #### Button按钮的实现与交互 在Android开发中,`Button`控件是最常用的用户界面元素之一,用于触发特定的操作或事件。本文档将详细讲解如何创建并自定义一个简单的按钮,并设置点击事件...
Android学习笔记(1)-永远不变的Hello World Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。 SDK的下载...
根据给定的信息,我们可以从Java和Android学习笔记中提取出一系列重要的知识点,下面将逐一进行详细解释。 ### Java基础知识 #### 1. 命令行基础操作 - **`javacmd`**: 这个命令是Java命令行工具的一部分,用于...
这篇学习笔记主要涵盖了关于布局的一些基本概念,特别是`fill_parent`和`wrap_content`这两种尺寸指定方式,以及如何通过XML布局文件来精确控制组件的位置。 首先,`fill_parent`和`wrap_content`是Android布局中的...
Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...
从给定的文件信息来看,这些内容主要是Android开发的学习笔记,涵盖了从基础控件的添加、布局的设置、样式主题的调整到Activity生命周期的管理等多方面的知识点。以下是对文件内容的具体分析: 1. 添加TextView控件...
本篇学习笔记主要涵盖了ArcGIS for Android的基础配置和核心组件MapVie的使用。 首先,配置ArcGIS for Android项目需要在`Project`级别的`build.gradle`文件中添加Esri的仓库,确保能获取到所需的库。接着,在`...
Android学习笔记全全整理,是针对想要深入理解并掌握Android开发技术的学习者们的一份宝贵资源。这份笔记涵盖了从基础到高级的多个方面,旨在帮助读者建立起完整的Android知识体系。以下将详细介绍其中可能包含的...
这份笔记涵盖了从基础到进阶的多个主题,帮助学习者系统地理解Android应用开发的过程。 首先,笔记会引导你了解Android的基础知识,包括Android系统的架构、SDK(Software Development Kit)的下载与安装、Android ...
1. **Android基础知识** - **环境搭建**:学习笔记首先从Android Studio的安装和配置开始,这是所有Android开发的起点,包括SDK Manager的使用,用于下载不同版本的Android SDK和所需的工具。 - **Hello World**:...
Android学习笔记整理.pdf