安卓學習筆記(一)
標簽: 安卓基礎筆記 android java 編程語言 安卓
一、Android 起源
Android操作系統最初是由安迪·魯賓(Andy Rubin)開發出的,2005年被Google收購,并于2007年11月5日正式向外界展示了這款系統。
二、安卓發展史
三、安卓開發基本概念
相同點:都是軟件工具開發包
不同點:SDK只能運行純java程序
NDK是一個編譯集合,可以通過jni技術實現java調用C/C++的代碼,效率更高也更安全,同時復雜性更高
四、安卓版本的發展
正式版發布之前有兩個測試的版本:分別是鐵臂阿童木和發條機器人
2008年由HTC代工發布了第一款安卓手機,谷歌公司發布安卓1.0,發展到現在的安卓10
歷史上擁有兩個主流版本2.3、4.4,是兩個比較穩定的版本
五、Android體系結構
一般分為4個層次:
1、應用程序層
應用層是一個核心應用程序的集合,所有安裝在手機上的應用程序都屬于這一層,
例如短信,瀏覽器,通訊錄等,或者下載的微信、QQ、支付寶等
2、應用程序框架層
Android為開發者提供的開放平臺,位于應用程序的下一層,主要提供了構建應用程序時用到的各種API。
Android提供的是一組服務和系統,在開發Applications層應用是會直接使用到。具體有:
1)視圖系統(View System):構建應用程序的界面。
2)內容提供者(Content Provider):允許應用程序訪問其他應用程序的數據或者共享數據。
3)通知管理器(Notification Manager):允許應用程序在狀態欄上顯示定制的提示信息。
4)活動管理器(Activity Manager):管理應用程序的生命周期,提供一個通用的導航回退功能。
5)資源管理器(Resource Manager):提供對非代碼資源的管理。
3.1、系統運行庫層
核心類庫包含了系統庫和Android運行環境。系統庫主要包括一組C/C++庫,
用于Android系統中不同的組件,這些功能通過Android應用程序框架對開發者開放。
一些相關的核心類庫:
1)C語言系統(libc):派生于標準C語言系統,并根據嵌入式Linux設備進行調優。
2)多媒體庫(Media Framework):基于OpenCore多媒體開源框架。支持多種視頻、音頻文件
3)外觀管理器(Surface Manager):管理訪問子系統的顯示,將2D繪圖與3D繪圖進行顯示上的合成。
4)SGL:底層的2D圖形引擎。
5)OpenGL|ES:基于OpenGL ES API的實現。該庫使用了硬件3D加速或高度優化的3D軟件光柵。
6)FreeType:用于位圖和矢量字體的渲染。
7)SQLite:一個強大得瑟關系型數據庫。
3.2.Android Runtime:
Android的一些核心庫,提供大部分Java編程語言核心庫的功能,還包括Dalvik虛擬機,
Android應用程序是在Dalvik虛擬機的實例下以進程形式運行。
4、Linux內核層
Android依賴于Linux相應版本的核心系統服務,例如安全、內存管理、
進程管理、網絡堆棧、驅動程序模型。
智能推薦
安卓學習筆記5——網絡編程
安卓學習筆記5——網絡編程 一、HttpUrlConnection 1.請求數據:get 2.提交數據:get/post (1)HTTP協議:查看網絡連接過程中http協議內容 (2)Post與Get方式提交數據的區別 (3)使用示例 3.亂碼問題 二、httpclient 三、AsyncHttpClient 四、三種方式的比較 一、HttpUrlConnection 1....
安卓學習筆記 隱式跳轉
目錄 目錄 顯式跳轉 隱式跳轉 (主要使用) 1.MainActivity 2.Main2Activity 3.在Manifest.xml中注冊使用 隱式跳轉使用案例 安卓原生相機拍照后返回到原界面 結果顯示 兩種方式總結: 顯式跳轉 多用在APP內部跳轉使用 隱式跳轉 (主要使用) 多用在跨APP間 實現的效果:-MainActivity跳轉到Main2Activity 類似于常見的跳轉效果,但...
安卓學習筆記:ListView的用法
ListView顯示列表數據,內容可以簡單的就是一行行的字符串,也可以復雜到每一行數據就是包含特定排版格式的數字、字符串、圖像等的組合。 簡單的純字符串的ListView的使用方法如下: 1.先引用在布局中設計好的ListView組件: 2.準備好ListView要使用的字符串數據,由于字符串好多個(一行一行的),所以字符串數據要封裝在ArrayAdapter中:例如: 3.listview組件使...
安卓學習筆記之Content provider
安卓四大組件之 content provider 用途 跨程序共享數據(為其他應用程序提供訪問數據的接口) 利用Content Provider對數據進行封裝,有利于脫離對數據庫的依賴性(解耦)。改變底層數據庫,而上層數據查詢不用改變。 什么是Content Provider? 使用安卓存儲有五種方式,分別是 文件 網絡存儲 數據庫 content provider sharedpreferenc...
安卓學習筆記之Handler
UI線程 當系統啟動的時候,就會創建一個主線程(Main Thread),然后這個主線程向UI組件分發事件,主線程和UI的組件進行交互,故稱UI線程。 線程安全 Android的UI線程是不安全的。引用一下,百度百科的解釋 線程安全就是多線程訪問時,采用了加鎖機制,當一個線程訪問該類的某個數據時,進行保護,其他線程不能進行訪問直到該線程讀取完,其他線程才可使用。不會出現數據不一致或者數據污染。 線...
猜你喜歡
安卓學習筆記之Okhttp
什么是okhttp? 我們如果原生的去寫一個網絡請求,需要用到的是HttpConnection等相關類去實現的,但是編寫原生的網絡請求,需要我們來實現更多復雜的功能,比如斷點續傳,都需要花費很長的時間去寫。效率也不高。所以我們為了方便在開發過程中能夠省電精力,需要運用到第三方網絡框架,那就是Okhttp。 Okhttp的使用 manifest添加網絡權限 < uses-permission ...
安卓學習筆記之IntentService
什么是IntentService 它會創建一個獨立的子線程來處理所有的Intent請求,創建的子線程來處理onHandleIntent()實現的代碼,無需處理多線程的問題。默認實現onBind()方法,返回為null;默認實現onStartCommand()方法,將請求的Intent添加到隊列中。這個類實際上是繼承自service,內部是封裝了HandlerThread和Handler類。 代碼實...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...