¿Cómo deshacerse de la depreciación de código?

Estoy trabajando en un proyecto de Android en Android Studio que soporta desde la versión 8 a 19. Quiero usar este método getBlockSizeLong (). Ahora si uso getBlockSize (), veo la línea de cancelación obsoleta como se puede ver en la imagen adjunta. Si utilizo getBlockSizeLong (), me sale error diciendo que este método no se puede utilizar para la versión 8! Incluso si utilizo una verificación de versión, la línea de cancelación persistirá. Eso es codificación fea. ¿Cómo debo tratar ahora?

introduzca la descripción de la imagen aquí

Bueno, hay varias formas de cómo puede hacer frente a esto. Con el fin de eliminar el "tachado" de los métodos obsoletos, puede utilizar Annotation @SuppressWarnings("deprecation") .

Ejemplo

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

Para eliminar el subrayado rojo de las nuevas llamadas de la API, puede utilizar la anotación @TargetAPI(int)

Ejemplo

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

Para determinar qué método llamar tiene un método auxiliar tal como el siguiente:

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

Puedes usar:

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

O

 @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(); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.