Android中級進階 FAQ

jopen 11年前發布 | 18K 次閱讀 Android Android開發 移動開發

1、Q:Android開發者應該先看什么文檔?

      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):若軟件再散布,必需以同一條款散布之。

          授權條款不得專屬于特定產品(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)復雜數據和邏輯的處理

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!