編輯:初級開發
A:對開發者來說,最重要的是概念,而DOCS中的Dev Guide裡面對其解釋十分清晰,請仔細閱讀。並可以到eoeandroid開發者社區中找到很多的文檔和學習資料。
2、Q:android系統架構有哪些?
A:Android的系統架構和其操作系統一樣,采用了分層的架構。從架構圖看,android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux核心層。
3、Q:什麼是開源?
A:開源,意為開放源代碼,由Bruce Perens(曾是Debian的創始人之一)定義如下:
1)自由再散布(Free Distribution):獲得源代碼的人可自由再將此源代碼散布。
2)源代碼(Source Code):程式的可執行檔在散布時,必需隨附完整源代碼或是可讓人方便的事後取得源代碼。
3)衍生著作(Derived Works):讓人可依此源代碼修改後,在依照同一授權條款的情形下再散布。
4)原創作者程式源代碼的完整性(Integrity of The Author"s Source Code):意即修改後的版本,需以不同的版本號碼以與原始的程式碼做分別,保障原始的程式碼完整性。
5)不得對任何人或團體有差別待遇(No Discrimination Against Persons or Groups):開放源代碼軟件不得因性別、團體、國家、族群等設定限制,但若是因為法律規定的情形則為例外(如:美國政府限制高加密軟件的出口)。
6)對程式在任何領域內的利用不得有差別待遇(No Discrimination Against FIElds of Endeavor):意即不得限制商業使用。
7)散布授權條款(Distribution of License):若軟件再散布,必需以同一條款散布之。
8)授權條款不得專屬於特定產品(License Must Not Be Specific to a Product):若多個程式組合成一套軟件,則當某一開放源代碼的程式單獨散布時,也必需要符合開放源代碼的條件。
9)授權條款不得限制其他軟件(License Must Not Restrict Other Software):當某一開放源代碼軟件與其他非開放源代碼軟件一起散布時(例如放在同一光碟片),不得限制其他軟件的授權條件也要遵照開放源代碼的授權。
10)授權條款必須技術中立(License Must Be Technology-Neutral):意即授權條款不得限制為電子格式才有效,若是紙本的授權條款也應視為有效。
4、Q:如何搭建編程環境?
A:開發平台推薦Eclipse。VS基本不要想,除非你特別鐘愛於傳統的vim或其他編程環境並且打算讓自己每天敲一堆命令,否則還是用Eclipse吧。它是官方推薦的,目前支持的還算中規中距。而且Linux,Windows都能用。
這裡拿eoe的技術大牛pcr所使用的開發環境舉例,SDK_2.3+Eclipse_3.6.1+ADT 8.0.1。這應該就是目前最普通的開發環境組合了。至於其他的輔助工具,可以在對android有一定了解之後在考慮添加。
5、Q:什麼是NDK?
A: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)
6、Q:怎樣提高android應用程序的速度?
A:首先, 我們要先明白“加快”是有兩層意思的,第一層是代碼執行所需要的時間,第二層意思是用戶需要等待用戶界面響應的時間。下面是提高android應用程序運行速度的幾條原則。
1)不要讓UI線程等待
2)耗時操作不可取
3)模擬器和真實的設備有不同
4)通知用戶,要注意用戶體驗。
7、Q:android運行庫有哪些?
A:Android 包括了一個核心庫,該核心庫提供了JAVA 編程語言核心庫的大多數功能。每一個android 應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik 虛擬機實例。Dalvik 被設計成一個設備可以同時高效地運行多個虛擬系統。Dalvik 虛擬機執行(.dex)的Dalvik 可執行文件,該格式文件針對小內存使用做了優化。同時虛擬機是基於寄存器的,所有的類都經由Java 編譯器編譯,然後通過SDK中的"dx" 工具轉化成.dex 格式由虛擬機執行。Dalvik 虛擬機依賴於Linux 內核的一些功能,比如線程機制和底層內存管理機制。
8、Q:android都支持哪些Java特性
A:針對於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基本上可以勝任常規的工作。
9、Q:android最簡單播放GIF動畫方法是什麼?
A:GIF動畫的原理就是逐幀播放,在android中提供了AnimationDrawable類可以實現,GIF89A的解碼方法在過去的J2ME平台移植到Android平台也能用,其實在Google android上面開發目前2.2以後的固件支持的方法除了Flash Player外,更好的兼容方法就是使用萬能的webkit浏覽器了。直接在工程中內嵌一個webVIEw,當然了路徑大家可以換成本地的,對於浏覽器使用本地資源url為file://開頭。
不過webView的資源消耗也不小,開個webVIEw對象可能占用了至少8MB的RAM吧,保守估計,當然更多的要看插件和以及Html的復雜程度所決定的。
10、Q:線程在android應用當中的作用?
A:1)動態更新UI 如AsyncTask 類,在開發Android應用時必須遵守單線程模型的原則: android UI操作並不是線程安全的並且這些操作必須在UI線程中執行
2)SOCKET之間的通信
3)文件的下載
4)與服務端之間的交互
5)復雜數據和邏輯的處理
解決方法:代碼package com.android;import Java.util.ArrayList;import Java.util.HashMap
圖2:OPhone的水平分工體制通信運營商中國移動占據主導。軟件開發和終端開發由播思通訊和各終端廠商負責。日本的窗口為鵬開科技。(圖:播思通訊的圖片。佐佐木陽拍攝,中國
RelativeLayout關系布局:在form中的用法:@[+][package:]type:name (@id/vIEwName)在主題模式form中的用法: ?[
l 使用Intent物件雖然透過Intent並非最快速,但卻是最有彈性的。無論是同一進程或是跨進程的溝通都可以使用它。例如:/* ===== EX-02 ======