內部API 和隱藏API

轉載自:http://mogoweb.net/archives/87

 

Android有兩類API在SDK中不能使用。

第一類就是位於包com.android.internal的API,我將這些API稱爲內部API。第二類API就是用@hide標記的類和函數,雖然嚴格說這不是一個API而是一系列隱藏API的集合,我仍然假定這是一個API,稱爲隱藏API。

隱藏API的例子

你閱讀android的源碼,就會發現有些常量、函數和類標記爲@hide.

這裏有一個隱藏常量的例子,來自WifiManager(source code of API Level 10).

image_thumb13_thumb

另外一個例子是隱藏函數setWifiAppEnabled,來自WifiManager(source code of API Level 10).

image_thumb15_thumb

所以您只要看到@hide屬性,這就是一個隱藏API。

內部API和隱藏API的不同

隱藏API隱藏是爲了防止開發人員使用SDK中未完成或者未穩定(接口和架構方面看)的部分。比如,Bluetooth API在API Level 5(android 2.0)之前就存在,但在API Level 3和4(android 1.5和1.6)中使用@hide隱藏起來了。當該API穩定下來,google的開發人員移除@hide屬性,在API Level 5中就有Bluetooth API了。還有很多東西在Level 4和5之間發生了變化。如果程序依賴於某些隱藏API,可能會在新版本的Android OS上運行出現問題。

而內部API則不計劃對外開放。這是android的內部餐廳,開發人員可以視爲黑盒子。這裏面的東西同樣可能發生改變。同樣的,如果您的程序依賴於內部API,在新的Android發佈後,可能遇到麻煩。

下面總結它們之間的不同:

隱藏API = 正在開發中;

內部API = 黑盒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章