我知道有(至少)两种方式做运行时检查,以确保我的代码不会调用的API不存在:Android的向后兼容性:反射对简单的条件检查
使用有条件的版本号检查,一拉
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
使用的java.lang.reflect和包装类技术为解释在这里:http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html
但我不明白什么时候应该用一种技术来代替另一种技术。当试图使用Android 类可能不存在,因为这样的装载在我的代码中引用的类会造成致命错误的反思似乎有必要。但是如何调用属于我知道的类的方法呢?例如,在设备上运行2.2(API 8):
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
ActionBar actionBar = getActionBar();
}
...
这是总是安全,还是有情况,其中一个崩溃会怎样呢?是否有任何理由检查活动中是否存在使用反射而不是使用上述版本检查的“getActionBar”方法?