標籤:android blog http java 使用 os
轉載於:http://blog.sina.cn/dpool/blog/s/blog_6c234ba90100wj1t.html
如何成為高手?
成為一名真正的Android高手必須掌握和遵循的一些準則:
1)學會懶惰
aDon‘t Reinvent the Wheel(不要重複發明輪子)。
bInventing the Wheel(發明輪子)。
cDon‘t Reinvent the Wheel(不要重複發明輪子)。
“輪子理論”,也即“不要重複發明輪子”,這是西方國家的一句諺語,原話是:Don‘t Reinvent the Wheel。“不要重複發明輪子 ”意思是企業中任何一項工作實際上都有人做過,我們所需要做的就是找到做過這件事情的人。拿到軟體領域中就是指有的項目或功能,別人已經做過,我們需要用的時候,直接拿來用即可,而不要重新製造。
2)精通Android體系架構、MVC、常見的設計模式、控制反轉(IoC)
3)編寫可重用、可擴充、可維護、靈活性高的代碼
4)高效的編寫高效的代碼
5)學會至少一門伺服器端開發技術
Android的特點都有哪些?
1)應用程式架構:支援組件的複用和更換
2)Dalvik 虛擬機器:專門為行動裝置進行過最佳化
3)整合的瀏覽器:基於開源的 WebKit 引擎 ,TV上會內建Chrome瀏覽器
4)最佳化的圖形機制:自訂的2D圖形庫,基於OpenGL ES 1.0規範的3D圖形實現(本項為硬體加速器可選)
5)SQLite:輕量級的資料庫,支援結構化資料的儲存
6)媒體支援:面向常見的音頻、視頻以及靜態圖形檔案格式 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
7)GSM 技術 GSM:global system for mobile communications (依賴硬體支援)
8)Bluetooth, EDGE, 3G, and WiFi (依賴硬體支援)
9)Camera, GPS, compass, and accelerometer (依賴硬體支援)
10)Rich development environment:豐富的開發環境,包含一套硬體模擬器,一些用於程式調試、記憶體和效能剖析的工具,以及支援Eclipse整合式開發環境的外掛程式(ADT )。
學習android需要哪些基礎?
學習Android一定要有Java基礎,最差也要類似Java的其他面對像對象語言的基礎。很多朋友從來沒有搞過編程,聽說Android能賺錢,就瘋了一樣衝過來要學習。這明顯是不靠譜的,甚至有的朋友一個字母一個字母的按照我的例子去敲代碼,然後非常努力的把代碼背下來。像背英文單詞一樣的背代碼,編程學成這個樣子,還真是讓小生佩服啊!不管怎樣,你最少也要掌握Java語言的如下知識點才能夠開始學Android:
a)Java基礎資料型別 (Elementary Data Type)及其特點
b)Java分支語句和迴圈語句的使用
c)類和對象的建立和使用方法
d)函數的使用
e)抽象類別和介面
f)繼承和實現
g)對象的多態性
h)包和存取權限
i)異常的處理
j)類集架構
k)eclipse的基本用法
Android上編程用什麼語言?
Android應用基於Java,支援SQL,由於底層是Linux所以底層支援C/C++。
目前有兩種編程:
1)基於ADT的JAVA編程
2)基於NDK的C編程
Android編程環境需要哪些?
編程環境:Ide 、Android SDK、JDK、Java
官方推薦用JDK+ECLIPSE+ADT+ADK(WINDOWS開發環境下。
什麼是APK?
APK是Android Package的縮寫,即Android安裝包(anapk)。APK是類似Symbian Sis或Sisx的檔案格式。通過將APK檔案直接傳到Android模擬器或Android手機中執行即可安裝。
apk檔案和sis一樣最終把android sdk編譯的工程打包成一個安裝程式檔案格式為apk。 APK檔案其實是zip格式,但尾碼名被修改為apk,通過UnZip解壓後,可以看到Dex檔案,Dex是Dalvik VM executes的全稱,即Android Dalvik執行程式,並非Java ME的位元組碼而是Dalvik位元組碼。
什麼是SDK?
SDK,Software Development Kit 的縮寫,中文即“軟體開發套件”。廣義上指輔助開發某一類軟體的相關文檔、範例和工具的集合。
SDK是一些被軟體工程師用於為特定的軟體包、軟體架構、硬體平台、作業系統等建立應用軟體的開發工具的集合,一般而言SDK即開發 Windows 平台下的應用程式所使用的SDK。它可以簡單的為某個程式設計語言提供應用程式介面 API 的一些檔案,但也可能包括能與某種嵌入式系統通訊的複雜的硬體。一般的工具包括用於調試和其他用途的工具 + 生產力。SDK 還經常包括範例程式碼、支援性的技術註解或者其他的為基本參考資料澄清疑點的支援文檔。
什麼是API?
API(Application Programming Interface)其實就是作業系統留給應用程式的一個調用介面,應用程式通過叫用作業系統的 API 而使作業系統去執行應用程式的命令(動作)。
其實早在 DOS 時代就有 API 的概念,只不過那個時候的 API 是以中斷調用的形式(INT 21h)提供的,在 DOS 下跑的應用程式都直接或間接的通過中斷調用來使用作業系統功能,比如將 AH 置為 30h 後調用 INT 21h 就可以得到 DOS 作業系統的版本號碼。而在 Windows 中,系統 API 是以函數調用的方式提供的。同樣是取得作業系統的版本號碼,在 Windows 中你所要做的就是調用 GetVersionEx() 函數。
什麼是TCP協議和UDP協議?
TCP/IP協議的名稱中只有TCP這個協議名,但是在TCP/IP的傳輸層同時存在TCP和UDP兩個協議。Tranfer ControlProtocol的簡稱,是一種連線導向的保證可靠傳輸的協議。通過TCP協議傳輸,得到的是一個順序的無差錯的資料流。發送方和接收方的成對的兩個socket之間必須建立串連,以便在TCP協議的基礎上進行通訊,當一個socket(通常都是server socket)等待建立串連時,另一個socket可以要求進行串連,一旦這兩個socket串連起來,它們就可以進行雙向資料轉送,雙方都可以進行發送或接收操作。
UDP協議是User Datagram Protocol的簡稱,是一種不需連線的協議,每個資料報都是一個獨立的資訊,包括完整的源地址或目的地址,它在網路上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。
什麼是NDK?
1)NDK是一系列工具的集合。
NDK 提供了一系列的工具,協助開發人員快速開發C(或C++)的動態庫,並能自動將so 和java 應用一起打包成apk。這些工具對開發人員的協助是巨大的。NDK 整合了交叉編譯器,並提供了相應的mk 檔案隔離CPU、平台、ABI 等差異,開發人員只需要簡單修改mk 檔案(指出“哪些檔案需要編譯”、“編譯特性要求”等),就可以建立出so。NDK 可以自動地將so 和Java 應用一起打包,極大地減輕了開發人員的打包工作。
2)NDK提供了一份穩定、功能有限的API標頭檔聲明。
Google 明確聲明該API 是穩定的,在後續所有版本中都穩定支援當前發布的API。從該版本的NDK 中看出,這些API 支援的功能非常有限,包含有:C 標準庫(libc)、標準數學庫(libm)、壓縮庫(libz)、Log 庫(liblog)
怎樣提高Android應用程式的速度?
首先,我們要先明白“加快”是有兩層意思的,第一層是代碼執行所需要的時間,第二層意思是使用者需要等待使用者介面響應的時間。下面是提高Android應用程式運行速度的幾條原則。
1)不要讓UI線程等待
2)耗時操作不可取
3)模擬器和真實的裝置有不同
4)通知使用者,要注意使用者體驗。
Android運行庫有哪些?
Android包括了一個核心庫,該核心庫提供了JAVA 程式設計語言核心庫的大多數功能。每一個Android 應用程式都在它自己的進程中運行,都擁有一個獨立的Dalvik 虛擬機器執行個體。Dalvik 被設計成一個裝置可以同時高效地運行多個虛擬系統。Dalvik 虛擬機器執行(.dex)的Dalvik 可執行檔,該格式檔案針對小記憶體使用量做了最佳化。同時虛擬機器是基於寄存器的,所有的類都經由JAVA 編譯器編譯,然後通過SDK中的‘dx‘ 工具轉化成.dex 格式由虛擬機器執行。Dalvik 虛擬機器依賴於linux 核心的一些功能,比如線程機制和底層記憶體管理機制。
Android都支援哪些Java特性
針對於Java SE或Java EE的程式員想轉到Android平台上進行開發,有以下幾點常規的支援:
1)目前來看JDK的進階特性均支援,比如說1. Java的反射、2.NIO (New I/O)、3. JNI (Java Native Interface)相對而言對於OpenGL和SQLite的支援比較強大,但是AWT和JDBC這些東西都不支援。
2)在Xml解析上,相容DOM、XmlPull和SAX,同時資料交換格式上,Android雖然不支援LINQ但對於Java來說JSON同樣支援。
3)對於Http處理方面,提供了輕量級的Http處理類,以及更完善的Apache庫支援。
4)音頻方面Android比較強大,使用了OpenCore庫,很多地方我們可以自己編寫編碼、解碼器進行擴充。
5)Android在檔案系統上基本山和Java是相同的,不過對於高效率的記憶體影射檔案而言提供了android.os.MemoryFile這個類。
總體而言,Java程式員轉入Android開發只需要瞭解平台特有的,Intent,Service,Receiver和Activity就差不多了,深入瞭解下AIDL和UI控制項和自訂Widget基本上可以勝任常規的工作。
Android最簡單播放GIF動畫方法是什嗎?
GIF動畫的原理就是逐幀播放,在Android中提供了AnimationDrawable類可以實現,GIF89A的解碼方法在過去的J2ME平台移植到Android平台也能用,其實在Google Android上面開發目前2.2以後的韌體支援的方法除了Flash Player外,更好的相容方法就是使用萬能的webkit瀏覽器了。直接在工程中內嵌一個webView,當然了路徑大家可以換成本地的,對於瀏覽器使用本地資源url為file://開頭。
不過webView的資源消耗也不小,開個webView對象可能佔用了至少8MB的RAM吧,保守估計,當然更多的要看外掛程式和以及html的複雜程度所決定的。
線程在Android應用當中的作用?
1)動態更新UI 如AsyncTask 類,在開發Android應用時必須遵守單執行緒模式的原則: Android UI操作並不是安全執行緒的並且這些操作必須在UI線程中執行
2)SOCKET之間的通訊
3)檔案的下載
4)與服務端之間的互動
5)複雜資料和邏輯的處理
JNI是什嗎?
JNI是Java Native Interface的縮寫,中文為JAVA本地調用。從Java1.1開始,Java Native Interface(JNI)標準成為java平台的一部分,它允許Java代碼和其他語言寫的代碼進行互動。JNI一開始是為了本地已編譯語言,尤其是C和C++而設計的,但是它並不妨礙你使用其他語言,只要呼叫慣例受支援就可以了。
使用java與本地已編譯的代碼互動,通常會喪失平台可移植性。但是,有些情況下這樣做是可以接受的,甚至是必須的,比如,使用一些舊的庫,與硬體、作業系統進行互動,或者為了提高程式的效能。JNI標準至少保證本地代碼能工作在任何JAVA 虛擬機器實現下。
感謝作者給我的啟發。