轉載自: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).
另外一個例子是隱藏函數setWifiAppEnabled,來自WifiManager(source code of API Level 10).
所以您只要看到@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 = 黑盒