Tengo problemas en mi aplicación con respecto a StrictMode y agregué el fragmento de código que básicamente deshabilita StrictModeHelper
Corrija el error de red.
¿Qué método se prefiere ... o básicamente están haciendo lo mismo?
@TargetApi
y @SuppressLint
tienen el mismo efecto central: suprimen el error de pelusa.
La diferencia es que @TargetApi
usted declara, a través del parámetro, qué nivel de API ha abordado en su código, de modo que el error puede aparecer nuevamente si luego modifica el método para intentar hacer referencia a algo más nuevo que el nivel de API citado en@TargetApi
.
Por ejemplo, suponga que, en lugar de bloquear las StrictMode
quejas sobre su error de red, intenta solucionar el problema de AsyncTask
ser serializado en versiones más nuevas de Android. Tiene un método como este en su código para optar por el grupo de subprocesos en los dispositivos más nuevos y utilizar el comportamiento de subprocesos múltiples predeterminado en los dispositivos más antiguos:
@TargetApi(11)
static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task,
T... params) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
}
else {
task.execute(params);
}
}
Tener @TargetApi(11)
significa que si Lint detecta que estoy usando algo más nuevo que mi android:minSdkVersion
, pero hasta el nivel de API 11, Lint no se quejará. En este caso, funciona. Sin embargo, si modifiqué este método para hacer referencia a algo que no se agregó hasta el nivel de API 14, el error de Lint volvería a aparecer, porque mi @TargetApi(11)
anotación dice que solo arreglé el código para que funcione en el nivel de API 11 y más abajo , no API nivel 14 y menos arriba.
Al usar @SuppressLint('NewApi')
, perdería el error de Lint para cualquier nivel de API, independientemente de lo que mi código haga referencia y para qué esté configurado mi código para manejar.
Por lo tanto, @TargetApi
es la anotación preferida, ya que le permite decirle a las herramientas de compilación "OK, arreglé esta categoría de problemas" de una manera más detallada.