【转】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组件,并重写该组件的事件处理方法.除了一些特定 ...
随机推荐
- python升级或者其他原因把yum搞坏了
第一个命令查询出来,原本是安装的啥版本 rpm -qa | grep python- | grep 2.6 然后执行下一个命令,就可以安装原本的python版本了,注意链接要换成你对应的那个版本 rp ...
- Java过滤特殊字符
Java正则表达式过滤 1.Java过滤特殊字符的正则表达式----转载 java过滤特殊字符的正则表达式[转载] 2010-08-05 11:06 Java过滤特殊字符的正则表达式 关键字: j ...
- 局部描述符表LDT的作用+定义+初始化+跳转相关
[0]写在前面 0.1)本代码的作用: 旨在说明局部描述符表的作用,及其相关定义,初始化和跳转等内容: 0.2)文末的个人总结是干货,前面代码仅供参考的,且source code from orang ...
- POJ 1840 Eqs(hash)
题意 输入a1,a2,a3,a4,a5 求有多少种不同的x1,x2,x3,x4,x5序列使得等式成立 a,x取值在-50到50之间 直接暴力的话肯定会超时的 100的五次方 10e了都 ...
- Mac 常用属性
如果需要让隐藏的文件可见. 具体做法就是打开一个Terminal终端窗口,输入以下命令: 对于OS X Mavericks 10.9: defaults write com.apple.finder ...
- Android Thread.UncaughtExceptionHandler异常消息捕获
public void uncaughtException(Thread thread, Throwable ex) { //处理异常 Log.e("崩溃",thread.getN ...
- 修改linux的hostname (修改linux系统的IP和hostname)
# vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=yourname //在这修改hostnameNISDOMAIN=eng-cn.platform.c ...
- SIFT算法详解(转)
原文地址 http://blog.csdn.net/pi9nc/article/details/23302075 尺度不变特征变换匹配算法详解 Scale Invariant Feature Tran ...
- 【tensorflow】tensorflow学习记录——安装、第一个程序篇
机器学习,人工智能往后肯定是一个趋势,现阶段有必要研究一两个人工智能的工具,以免自己技术落伍,其中tensorflow就是一个很不错的项目,有谷歌开发后开源,下面开始学习安装和使用 安装篇: 很不幸, ...
- Java for LeetCode 123 Best Time to Buy and Sell Stock III【HARD】
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...