如何摆脱代码弃用?

时间:2014-09-12 13:14:36

标签: android

我正在开发Android Studio中的Android项目,它支持从版本8到19.我想使用此方法getBlockSizeLong()。现在,如果我使用getBlockSize(),我会看到已弃用的取消行,如附图所示。如果我使用getBlockSizeLong(),我会收到错误,说这个方法不能用于版本8!即使我使用版本检查,取消行仍将保留。这是丑陋的编码。我现在该怎么办?

enter image description here

2 个答案:

答案 0 :(得分:5)

有多种方法可以解决这个问题。要删除已弃用方法的“删除线”,您可以使用注释@SuppressWarnings("deprecation")

实施例

@SuppressWarnings("deprecation")
private void getBlockSize(StatFs stat){
   long blockSize = stat.getBlockSize();
}

为了删除新API调用的红色下划线,您可以使用注释@TargetAPI(int)

实施例

@TargetApi(18)
@SuppressLint("NewApi")
private void getBlockSizeNewApi(StatFs stat){
   long blockSize = stat.getBlockSizeLong();
}

要确定要调用哪种方法,可以使用如下的Helper-Method:

public static boolean isVersionOrGreaterThan(int version){
    return Build.VERSION.SDK_INT >= version;
}

答案 1 :(得分:2)

您可以使用:

@SuppressWarnings("deprecation")
private void getBlockSize(StatFs stat){
   long blockSize = stat.getBlockSize();
}

@TargetApi(18)
public void yourMethod()
{
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    long blockSize;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2){
        // Do something for JELLY_BEAN_MR2 and above versions
        blockSize = stat.getBlockSizeLong();
    } else{
        // do something for phones running an SDK before JELLY_BEAN_MR2
        blockSize = stat.getBlockSize();
    }
}