【转】Pro Android学习笔记(一):Android 平台 2013.6.4
本系列是阅读《Pro Android4》的读书笔记,也包括网络阅读资料的整理,以及个人心得。
由于智能手机引入AP(应用处理器),Android在某种意义上是个人计算机,具有桌面计算机的完整架构,采用Linux-based OS stack来管理设备、内存和进程。Android的Java库覆盖电话,视频、连接、图形、UI编程等多个方面。Android SDK支持几乎全部的J2SE,除去UI的AWT和Swing部分,而用Android UI framework取而代之。
Android针对手持设备的受限内存、处理器速度和电池能力进行优化Dalvik VM。Dalvik VM将所生成的Java calss文件封装到一个或多个Dalvik执行性文件(.dex)。最终在Android执行的代码,并不是Java Byte code,而是.dex文件。也就是你不能直接运行Java Byte code,需要转为.dex文件。
应用开发者的Android架构视图
从应用开发者角度看Android软件stack。
LinuxKernel处理设备驱动、资源访问、电源管理以及其他的OS工作。(Wei:我觉得这不准确,因为Android有改动,特别是HAL,且Linux社区没有接纳Android的贡献。)
在内核之上是C/C++库,如OPenGL,WebKit,FreeType(字体处理),SSL,libc,SQLit、Meida。Bionic是Android基于BSD的Glibc,针对嵌入系统进行改良的libc版本,大小约为原来的一半。媒体库是基于PacketVideo的OpenCore,用于录制和播放音频及视频格式。Surface管理器处理系统显示,支持2D和3D。Android采用Skia作为2D图形库,采用OpenGL ES来支持3D。
绝大部分的应用框架是通过DalvikVM来访问核心库。Dalvik VM运行多个VM实例。当Java应用访问核心库时,每个应用获得它自己的VM instance。(Wiki:Dalvik虚拟机器可以有多个实例,每个Android应用程序都用一个自属的Dalvik虚拟机器来执行,让系统在执行程序时可达到优化。Dalvik虚拟机器并非执行Java字节码,而是执行一种称为.dex格式的档案)
Android Java库就是Android标准架构图中的应用框架层,包括电话、资源,位置、UI、内容提供者、和包管理器。开发者在这些API上进行应用开发。有些应用已经集成到系统上,如Home,联系人,电话,和浏览器。
通过Android SDK开发应用
Android模拟器。Android模拟器能支持90%的应用开发,但在USB连接、摄影和视频捕获,电池模拟,蓝牙,耳机,Wi-Fi,NFC和OpenGL ES上有限制。Android采用QEMU技术,是开源的“处理器模拟器”,允许一个OS模拟器在另一个OS上运行。(Wei:MeeGo的模拟器也是采用QEMU,此外还需要KVM,最大的问题是KVM虚拟化需要硬件的支持,即CPU必须支持VT,但不是所有桌面机的CPU都能支持,特别手提的CPU)
Android UI。Android UI可以用XML脚本文件来定制UI应用的窗口,通过ID来获取在Java代码中进行控制。而屏幕或窗口在Android中称为activity。View是Android基础的UI单位,可组合为view group。View内部使用cavase,painting和用户交互这些熟悉概念。在Android 3.0引入新UI概念fragment,目的是在大屏幕(平板)上处理多窗格,而fragment提供窗格的抽象。Android框架的一个关键概念是activity窗口的生命周期管理。
基础组件。Android的UI框架引入新概念intent。Intent是一个进程内和进程间唤醒组件的机制。作为组件就是一段有明确生命周期的代码,如activity、service,由事件唤起的receiver,都是组件。要调起组件,intent具有窗口消息,action,发布和订购模式,以及进程间通信。
Android对资源支持很直观,支持string,bitmaps以及XML-basedView定义。自动生成文件R.java就是对资源的描述,每个自动生成的ID都对应在XML文件中元素或整个XML文件。开发者可通过这些ID使用这些XML定义。这对于处理本地语言环境、设备大小适配等非常有帮助。
另一个新概念是content provider,数据源的抽象。
先进UI概念。Android引入很多先进的UI概念。包括采用XML方式来描述layout和menu,异步dialog(注意,不是Windows中MFC的同步方式的modal dialog),对动画的支持,包括frame-by-frame动画,视觉转换的渐变方式(放大、缩小,位移,旋转、角度)。Android通过OpenGL ES支持3D图形。OpenGL ES是C库,Android沿用了J2ME中对Open ES定义的API,具体可以参考ProAndroid 3。
在HomeUI方面。Android支持live floder(是一种小型的应用层插件。它本身体现为桌面出现的图标,通过点击这些图标,将出现一个列表框,列表框中将显示数据信息。通过活动目录可以在不打开应用程序的情况下,在桌面就能查看其中的数据信息。[1])。但是随着对home screen widget的支持,livefloder的作用渐微。Android还提供Integrated Search,可以搜索设备和网络的信息,提供searchAPI。
此外还有自定义的手势、传感器控制、动态配置(如根据横竖屏进行的排版),平板的actionbar,Drag-and-drop(Android 4.0中可用于phone和pad)等。
上面的这一些大都会在《Pro Android 4》后面章节中详细描述。
其他。此外还有Service组件,Media组件、Telephony组件,具体可以详细阅读Android SDK reference对package的说明。Android通过应用的AndroidManifest.xml文件来体现这些概念,包括activities的定义、service和contentprovider的注册,许可声明等等。
目前Andriod有超过50个包和过千个class。除了andriod.*外,还包括java.*,javax.*,以及其他,如org.apache.http,org.json, org.w3c.com,org.xml.sax, org.xml.sax.ext, org.xml.sax.helpers, org.xmlpull.v1, and org.xmlpull.v1.sax2开头的namespace包。
从Android开源代码中获益
Android源代码教程在http://source.android.com。Git在https://android.googlesource.com/,但目前不支持在线阅读,必须git下来。在线阅读可在http://www.oschina.net/code/explore/android-4.0.1。或者更为完整的,更便于阅读的,可访问http://www.grepcode.com/search/?query=google+android&entity=project。
相关链接: 我的Android开发相关文章
转自http://blog.csdn.net/flowingflying/article/details/9020783
【转】Pro Android学习笔记(一):Android 平台 2013.6.4的更多相关文章
- Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...
下面是Android的学习笔记,原文地址. 我是使用adb devices出现如下红字错误, 使用第一种方法方法,结果关掉豌豆荚就可以了. android adb启动失败问题 adb server i ...
- Android学习笔记之Android Studio添加新的Activity
1.创建Android项目工程:AndroidTest 创建过程可参考网上诸多教程. 2.添加新的Activity,步骤如下 a. 在layout文件夹上右键,New-Activity-相应Activ ...
- Android学习笔记之 android:collapseColumns ,android:shrinkColumns 和stretchColumns
摘自:http://blog.csdn.net/sjf0115/article/details/7213565/ TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但 ...
- android学习笔记45——android的数据存储和IO
android的数据存储和IO SharedPreferences与Editor简介 SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此其保存的数据主要是简单的类型的ke ...
- Android学习笔记之Android Studio下创建menu布局文件
1.创建menu文件夹 Android Studio项目中如果没有menu文件夹,在res文件夹右键,new-Android resource directory: 则会弹出下图对话框,在Resour ...
- Android学习笔记_79_ Android 使用 搜索框
1.在资源文件夹下创建xml文件夹,并创建一个searchable.xml: android:searchSuggestAuthorityshux属性的值跟实现SearchRecentSuggesti ...
- android学习笔记(9)android程序调试学习
相应若水老师的第十四课 一,Log日志输出 Log.v(tag,message); //verbose模式,打印最具体的日志 Log.d(tag,message); // ...
- Android学习笔记(1)—Android Studio安装
Android Studio 是一个全新的 Android 开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工 ...
- Android学习笔记1——Android开发环境配置
一.JDK配置 Android是基于Java进行开发的,首先需要在电脑上配置JDK(Java Development Kit).在http://www.androiddevtools.cn/下载对应系 ...
- Android学习笔记(36):Android的两种事件处理方式
Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理. 我们来说的easy理解一点: (1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法.除了一些特定 ...
随机推荐
- 【转】soapUI和Jmeter的接口测试结构区别
使用SoapUI和Jmeter都可以进行自动化接口测试,但是每个工具都有自身的特点,所以他们的结构也有一定的区别 SoapUI 项目名称 -Rest服务.Rest资源 在使用SoapUI进行接口测试时 ...
- 九度OJ 1043:Day of Week(星期几) (日期计算)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5349 解决:1923 题目描述: We now use the Gregorian style of dating in Russia. ...
- viewport详解
本文主要讲解viewpor相关知识. 参考资料&内容来源 博客园:https://www.cnblogs.com/zaoa/p/8630393.html 博客园:http://www.cnbl ...
- 图床QAQ
- 【题解】CF989C A Mist of Florescence
[题解]CF989C A Mist of Florescence 题目大意: 让你构造一个\(n∗m\)矩阵,这个矩阵由4种字符填充构成,给定4个整数,即矩阵中每种字符构成的四联通块个数,\(n,m\ ...
- 一起来学linux:sudo
通常在转换用户的时候会用到su 用户的方式.但是su方式需要知道切换的用户密码.而且su root到roo账户后,root账户有全部的权限.为了防止root账户干错事,因此有了sudo的命令.sudo ...
- 查看物料凭证MB03 /MIGO A04-显示,R02-物料凭证
当货物移动操作后,可以使用事物码MB03.MIGO查询最近一次生成的物料凭证, 如果未知凭证号,Table:MKPF / AUFM/EKBE MKPF 抬头:物料凭证 KEY: MBLNR 物料凭证编 ...
- (转)nginx-rtmp-module和ffmpeg搭建实时HLS切片
1.rtmp服务器 nginx+pcre+zlib+openssl+nginx-rtmp-module ./configure \ --prefix=/usr/local/nginx \ --sbin ...
- [2018-12-18]ABP中的AsyncCrudAppService介绍
前言 自从写完上次略长的<用ABP入门DDD>后,针对ABP框架的项目模板初始化,我写了个命令行工具Abp-CLI,其中子命令abplus init可以从github拉取项目模板以初始化项 ...
- 3D文字特效
在线演示 本地下载