Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> 反射在Android開發中的利弊

反射在Android開發中的利弊

編輯:初級開發

由於android 2.2的推出,很多新的API加入導致很多項目移植需要考慮使用Java的反射機制Reflection來動態調用,動態調用的好處就是不需要使用引用文件,直接通過JDK中聲明好的方法直接調用,本身原理基於JVM的,從Java 1.5開始支持,原理上就是根據類名而不實例化對象的情況下,獲得對象的方法或屬性而直接調用。

  android開發時反射能幫助我們多少?

  1. 有些網友可能發現android的SDK比較封閉,很多敏感的方法常規的用戶無法編譯,我們如果翻看了代碼直接在反射中聲明動態調用即可。比如很多internal或I開頭的AIDL接口均可以通過反射輕松調用。

  2. 反射對於Android123來說更重要的是考慮到應用的兼容性,我們目前主要兼容從android 1.5到2.2的項目,API Level從3到8可以方便的擴充,調用前我們預留一個標志位聲明該API的最低以及最高的API Level為多少可以調用。

  3. 對於調試Java的反射是功臣了,在Logcat中我們可以看到出錯的地方肯定有類似Java.lang.reflect.XXX的字樣,這種自檢機制可以幫助我們方便的調試android應用程序。

  反射的缺點有哪些?

  1. 因為是動態執行的,效率自然沒有預編譯時引用現有的庫效率高,就像平時我們Win32開發時,可以不用h文件,直接通過GetProcAddress一樣去動態獲取方法的地址。當然效率要根據復雜程度而決定,一般稍微復雜的處理性能損失可能超過20%,對於一些復雜的涉及Java自動類型轉換判斷,執行時間可能是直接引用的上千倍,所以最終我們調試時必須考慮性能問題。

  2. 因為反射是動態的,所以需要處理很多異常,不然Dalvik崩潰出Force Close的概率會大很多,很簡單的一個反射就需要至少3個異常捕獲,本身try-catch效率就不是很高,自然進一步影響運行效率,對於android開發我們必須考慮這些問題。

  3. 反射因為導致代碼臃腫,自然稍微復雜的幾個方法實用反射將會導致代碼可讀性和維護性降低,如果很抽象的調用android開發網強烈不推薦這種方法。

  最後要說的是Reflection並不是Java的專利,微軟的.Net也同樣支持,同時更多的動態語言如Ruby等均支持這一特性。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved