- 浏览: 119775 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhifeiji512:
George_ghc 写道第一段代码给cursor赋值第二段代 ...
Android中Cursor关闭的问题
一‧Android的來源:
Google 併購 Android 公司後所推出的手機平台,採用 Linux 為作業系統。所以系統程式包含了 C 語言的標準函式庫,但應用程式主要以Java語言在Dalvik VM虛擬機器執行,應用程式開發環境以Eclipse為主,加上 Android Development Tools (ADT) Plugin。
二‧Android的目的:
Android平台的主旨是提供一個應用程式架構(application framework),好讓各家OEM業者可不須從頭進行軟體開發,就能推出一系列的Android平台手機。
三‧Android的特色:
Application framework:提供可重覆使用及改寫的元件。
Dalvik virtual machine:提供給行動裝置一個最佳化過的Java虛擬機器。
Integrated browser:基於一個WebKit引擎開放源碼的瀏灠器 ,像Mac上的Safari也是從WebKit衍生出來的。
Optimized graphics:最佳化過的繪圖函式庫,包含了SGL的2D繪圖函式庫及基於OpenGL ES 1.0規範的3D繪圖函式庫。
SQLite:一個結構化的資料庫系統 。
Media support:多媒體影音格式支援包含了MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF 。
GSM:GSM手機的通話能力其實必須在硬體電路層次實現,軟體層次無法實現,只是Android平台要求必須要有GSM通話能力,此項功效特點與其說是特點,不如說是訂立出最低的硬體要求規範。
Bluetooth,EDGE,3G,and WiFi,Camera,GPS,compass,and accelerometer:同GSM它必需由實際硬體決定是否支援 。
Rich development environment:包含了裝置模擬器,除錯工具,記憶體及效能評估分析工具及讓Eclipse IDE支援Android專案的外掛程式。
上圖呈現出整個系統架構分成(1)Applications,(2)Application Framework,(3)Libraries,(4)Android Runtime,(5)Linux Kernel五大架構
Android本身是一套軟體堆疊(Software Stack),或稱為「軟體疊層架構」,疊層主要分成三層:作業系統、中介軟體(Middleware,大陸方面稱為:中間件)、應用程式。想開發可在Android平台執行的應用程式,必須用Java程式語言撰寫才行。
中介軟體,凡是介於作業系統與應用程式間的,多概稱為中介軟體,Android的中介軟體可再細分出兩層,底層為函式庫(Library)及虛擬機器(Virtual Machine;VM),上層為應用程式框架(Application Framework)。 上面的架構圖裏全部的藍色框框全部都是用Java語言撰寫的,綠色框框由C/C++組成,紅色的Kernel層當然就是C囉。
底下分別簡介一下各層的功用
應用程式層(Applications)
Android出貨時整套的應用程式將會包含了有電子郵件程式,短訊程式,日曆,地圖,瀏覽器,通訊程式...等等。所有的應用程式皆必需以Java的程式語言撰寫。
應用程式框架層(Application Framework)
程式設計師在寫應用程式時可以完整的存取使用統一的應用程式標準介面,這個應用程式框架的架構是可以很容易的去重覆使用各個原件, 所有的應用程式都可以提供出它自己本身的特殊功能,所有的應用程式也可以較容易的去使用其它程式的特殊功能。這樣子的統一機制,有助於開發者去改寫自己新的軟體原件。
基本上所有的應用程式是由services及systems所組成,包含有:
(1) Views System:用來建構一個應用程式的基本原件,包含了有lists,grids,text boxes,buttons,甚至是一個嵌入式的瀏覽器。這裏有Android整理好的view外觀圖
(2) Content Providers(內容提供者):它可以用來讓程式跟程式之間互相存取/分享資料。例如某一個應用程式可以去存取通訊錄應用程式內的聯絡人資料。或者呼用Resource Manager可存取的非程式碼資源,例如:當地性設定(該地貨幣、語言、時間格式)、圖像...等。
(3) Resource Manager(資源管理員):提供各種資源讓程式去使用,比如:區域性的字串,圖片,排版檔(layout files)。
(4) Notification Manager(訊息管理員):提供程式在狀態列(status bar)的地方顯示應用程式自有的警示(alert)訊息。 狀態列Android設定在手機的頂部,像短訊(short message),voice mail皆會出現在此。
(5) Activity Manager(活動管理員):管理所有的應用程式生命週期及一般性的回溯導航(navigation backstack )。
(6) Window Manager(視窗管理員):管理所有的視窗程式
(7) Location Manager:應該是用來做地圖服務的功能。
(8) Telephony Manager:用來管理所有的移動設備(電話)的功能,就是提供使用者撥打與接收電話的功能啦。
(9) Package Manager:Android系統內所有安裝的程式管理。
(10) XMMP Service:ineXtensible Messaging and Presence Protocol透過此服務得知手機的位置,在0.9 SDK已暫時移除此功能的樣子。
函式庫層(Libraries)
Android所有豐富多樣的元件皆是由C/C++函式庫所組成,但Android所有的應用程式皆必需經由API來使用這些功能。
主要的核心函式庫列表如下:
(1) System C library - 一個由BSD衍生出來的標準C系統函式庫(libc),目前這個已針對Linux嵌入式裝置進行過最佳化。
(2) Media Libraries - 基於PacketVideo's OpenCORE的多媒體函式庫;這個多媒體函式庫支援播放/錄製許多現在很流行的聲音及影像格式。比如:MPEG4,H.264,MP3,AAC,AMR,JPG,及PNG。
(3) Surface Manager - 這個部份讓開發者可以去存取顯示系統,以及實現無接縫的2D/3D多應用程式之間的整合。
(4) LibWebCore - 一個先進的網頁瀏覽器引擎。
(5) SGL - 2D繪圖引擎。
(6) 3D Libraries - 一個基於OpenGL ES 1.0規範的3D繪圖引擎。它可以選擇要硬體的3D加速或高度最佳化的3D軟體程式去呈現結果。
(7) Free Type - 點陣圖及向量字形。
(8) SQLite - SQLite是一套開放原碼的關連式資料庫,提供給android上所有的應用程式使用。其特點在於輕量性(僅500KB左右的容量),適合手持式裝置運用,此外桌上型運算的應用程式也有使用,如OpenOffice.org 2.0版之後就有內建SQLite。
(9) SSL - Secure Socket Layer專門用於保護網頁通訊的協定。
執行層(Android Runtime)
Android 雖然用Java程式語言來開發、撰寫應用程式,但卻不使用一般大家目前在用的Java Runtime(J2ME)版本來執行Java程式,而是用Android自有的Android Runtime來執行。
Android Runtime包含下面兩個核心。
(1) Core Libraries
核心函式庫裡頭已經包含了絕大多數Java程式語言所需要呼用的功效函式,接著每一個Android應用程式都會以自屬的process而且Android不是用一個Dalvik虛擬機器來同時執行多個Android應用程式,而是每個Android應用程式都用一個自屬的Dalvik虛擬機器來執行。
(2) Dalvik Virtual Machine
Dalvik虛擬機器是一種暫存器型態的虛擬機器。在撰寫開發時就已經設想用最少的記憶體資源來執行,以及前述的「同時可執行多個VM個體」。
Dalvik虛擬機器有許多地方是參考Java虛擬機器設計,Dalvik虛擬機器所執行的中介碼並非是Java虛擬機器所執行的Java Bytecode,同時也不直接執行Java的類別檔(Java Class File),而是依靠轉換工具將Java bytecode轉為Dalvik VM執行時特有的dex(Dalvik EXcutable)格式,稱為.dex。Dalvik VM相較於Java VM最大的不同在於Java VM為Stack-based,而Dalvik是register-based。 以技術層面考量Register-based VM的特性有個很大的好處,那就是對於現有主流的硬體架構,如此很容易與現有系統整合且最好化,而所需要的資源也相對較少。 甚至在硬體實作VM上會比較容易實現。 最重要的是Dalvik 並非是Java ME的實作,因此沒有Java ME授權相關的議題。
正常的Java比較慢不單單只是因為Virtual Machine的關係,Java的程式編釋成bytecode的也是關鍵因素之一,因Java VM採用了Stack Based的方式產生指令,所以所有的變數皆需push,pop到stack裏去,所以就會多出不少指令,而Delvik VM則改用register based的方式,變數皆存放於暫存器中,相較之下Delvik VM的指令就會少一點,速度也就會再加快一點。
作業系統層(Linux Kernel)
Android平台的作業系統用的是Linux,其核心版本為2.6版,Android所用的Linux核心,其包含的功效包括:安全(Security)、記憶體管理(Memory Management)、行程管理(Process Management)、網路堆疊(Network Stack,大陸方面稱為:網絡堆棧)、驅動程式模型(Driver Model)等,另外也在前述的軟體堆疊與硬體間建立起一個抽象層(Abstraction Layer)。
資料來源:
Google Android裡頭有什麼?
http://tech.digitimes.com.tw/ShowNews.aspx?zCatId=416&zNotesDocId=0000075729_A6M61Q6E423GAM68B95IS
What is Android?
http://code.google.com/android/what-is-android.html
Dalvik VM Internals
Android's Developers Blog
发表评论
-
repo用法
2012-03-16 14:24 1313repo用法(转载) http://blogold ... -
Git使用指南
2012-03-15 14:43 9411.创建目录 $ git config --glo ... -
关于Android的多种屏幕支持
2011-12-14 14:23 1302首先是几个基本概 ... -
android ListView 修改背景
2011-12-14 09:39 1914修改listview时存在的 ... -
详解android:scaleType属性
2011-11-28 17:09 6403android:scaleType是控制图片如何res ... -
Android使用AIDL设计和调用远程接口
2011-11-24 18:14 4058在Android中, 每个应 ... -
Android开发 系统应用调用,Intent使用总结
2011-11-09 09:48 1392转载来源网上资料。 显示网页: 1. Ur ... -
ListView结合ContextMenu 获取点击项的Position
2011-11-07 17:35 1474ContextMenu称为上下文菜单,一般在控件上长按时 ... -
List of Android MIME types and Uri's
2011-11-07 16:35 1612This is a list of URIs that can ... -
隐藏输入法
2011-11-07 14:16 841在manifest里设置,android:windowSoft ... -
SlidingDrawer 使用
2011-10-28 17:51 4012关于SlidingDrawer控件 1.重要属性 ... -
Android通知及receiver
2011-10-24 15:09 38211. BroadcastReceiver Broadc ... -
Notification
2011-10-21 16:49 1592可以给Notification设置缺省的表现形式: ... -
Android获取其他包的Context实例
2011-10-20 11:17 956Android中有Context ... -
Android 中Message,MessageQueue,Looper,Handler详解+实例
2011-10-18 13:23 988一、几个关键概念 ... -
Activity 的生命周期 以及 横屏竖屏切换时 Activity 的状态变化
2011-10-18 13:21 1084转自:http://www.blogjava.ne ... -
免费的Android UI库及组件推荐
2011-10-18 13:10 3010转自:http://www.iteye.com/news/22 ... -
众多Android 开源项目推荐,给力工作给力学习
2011-10-18 11:54 680转自:http://www.cnblogs.com/Terry ... -
下拉刷新
2011-10-18 11:10 815下拉刷新 参考代码 https://gith ... -
canvas.translate(x,y)理解
2011-10-17 15:59 2697translate(float x,float y)函数是将整 ...
相关推荐
Android Architecture Blueprints The Android framework provides a lot of flexibility in deciding how to organize and architect an Android app. While this freedom is very valuable, it can also lead to ...
《Android架构探索——Android Architecture.pdf》 在移动开发领域,Android操作系统无疑占据了主导地位,而深入理解其架构对于开发者来说至关重要。本资料“Android Architecture.pdf”聚焦于Android系统的架构...
"Android Architecture_googlesamples.zip"是谷歌提供的一组开源项目,旨在帮助开发者理解和实践各种Android应用程序的体系结构工具和模式。这个压缩包中的"architecture-samples-master"目录,包含了多个示例应用,...
Android开发:Android Architecture Components教程.pdf
AndroidArchitecture Recommended architecture by Android. This repo shows that how to use LiveData, Room Persistence, Dagger 2, Retrofit, MVVM and DataBinding. READ ME!!! Still under development. ...
本文以“AndroidArchitecture-毕业论文”为研究对象,深入探讨了基于Model-View-Presenter(MVP)模式的Android应用架构设计,并通过实例分析了其在实际开发中的应用。 一、架构需求分析 1. **流程分层**:为了...
Android开发:Android Architecture Components:5.Room数据库框架入门.pdf
Android开发:Android Architecture Components:3.ViewModel的使用与实践.pdf
Android开发:Android Architecture Components:11.Paging分页加载数据技术.pdf
Android开发:Android Architecture Components与Dagger依赖注入框架结合使用教程.pdf
Android开发:Android Architecture Components:7.Room数据库查询构建器使用.pdf
株洲新程IT教育的李赞红老师分析了基于Google官方的Android Architecture Blueprints的MVP模式实现案例。该案例是一个TODO任务管理器,涉及的功能有:管理TODO列表、添加新的TODO任务、查看TODO详情以及统计任务信息...
以"KnowWeather-master"为例,这是一款实现了模块化架构和Android Architecture Components(AAC)的天气应用程序,它为我们提供了一个极好的学习平台,来深入理解如何打造美观且实用的应用。 首先,模块化架构是将...
**Android架构组件(Android Architecture Components)** Android Architecture Components是一组库,旨在帮助开发者构建健壮、测试友好且可维护的Android应用。这个组件集主要包含了以下几个核心组件: 1. **...
**Android架构组件(Android Architecture Components)**是Google推出的一套用于构建健壮、可测试且易于维护的Android应用的库。这个基本项目是基于Android Architecture Components构建的,它旨在遵循现代Android...
在Android应用开发中,Android Architecture Components (AAC) 是一套用于构建健壮、可测试和可维护的应用的库。本示例项目重点展示了如何利用AAC中的关键组件,特别是Model-View-ViewModel (MVVM) 设计模式,来创建...
《基于MVP的Android App架构设计与案例分析》 在当今移动互联网时代,Android操作系统以其开源、自由的特点占据了智能手机市场的主导地位。对于Android应用程序(App)的开发,选择合适的架构模式至关重要,它决定...
Android架构是Android操作系统的核心组成部分,它是一个分层的、组件化的体系结构,旨在提供高效、灵活和可扩展的平台。让我们深入探讨这个架构的各个层面及其功能。 首先,Android架构可以分为五个主要部分:Linux...