如果我使用“if(android.os.Build.VERSION.SDK_INT> = 11)”,则需要反射吗

我正在开发一个针对API 11(3.0)的应用程序,但minSDKVersion为7(2.1).

我以编程方式而不是XML方式生成PreferenceActivity.在Honeycomb中,首选项布局有一个内置的图标位置,可以在每个首选项旁边显示.您可以使用prefScreen.setIcon(R.drawable.my_icon)进行设置;

所以我不想在API 7-10上这样做.这是否足以防止崩溃?

if (android.os.Build.VERSION.SDK_INT>=11)
    prefScreen.setIcon(R.drawable.myIcon);

我知道更安全的解决方案是在尝试使用它之前使用反射来检查该方法是否存在.

解决方法

根据 http://developer.android.com/training/basics/activity-lifecycle/starting.html,它暗示在Android 2.0及更高版本上使用SDK_INT常量可以安全地包装对更新API的调用,而不使用反射.

Caution: Using the SDK_INT to prevent older system’s from executing new APIs works in this way on Android 2.0 (API level 5) and higher only. Older versions will encounter a runtime exception.

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...