如果我使用“if(android.os.Build.VERSION.SDK_INT> = 11)”,是否需要反思

时间:2011-07-31 17:48:07

标签: android

我正在开发一款针对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);

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

3 个答案:

答案 0 :(得分:10)

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

  

警告:使用SDK_INT阻止旧系统执行   新的API在Android 2.0(API级别5)及更高版本上以这种方式工作   只要。旧版本将遇到运行时异常。

答案 1 :(得分:2)

这对我有用:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
            //code 
}

答案 2 :(得分:1)

如果该方法在较低版本的平台上不可用,则在系统加载文件时它将崩溃(它甚至不会使其执行if语句)

您应该查看有关延迟加载的文章,以便对Android Dev Blog

进行反思