内部API 和隐藏API

来源:互联网 发布:pic单片机中trisa 编辑:程序博客网 时间:2024/05/13 11:23

转载自: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 = 黑盒

0 0