¿Qué es mejor: @SuppressLint o @TargetApi?

Tengo problemas en mi aplicación con respecto a StrictMode y agregué el fragmento de código que básicamente deshabilita el StrictModeHelper . Sin embargo, Lint se queja ahora de setThreadPolicy() y propone añadir cualquiera

 @SuppressLint 'NewApi' 

o

 @TargetApi(Build.VERSION_CODES.GINGERBREAD) 

al evento onCreate() de la vista.

¿Qué método es preferido … o básicamente están haciendo lo mismo?

    Tengo problemas en mi aplicación con respecto a StrictMode y agregué el fragmento de código que básicamente deshabilita el StrictModeHelper

    Por favor arregla el error de red.

    ¿Qué método es preferido … o básicamente están haciendo lo mismo?

    @TargetApi y @SuppressLint tienen el mismo efecto central: suprimen el error de Lint.

    La diferencia es que con @TargetApi , usted declara, a través del parámetro, qué nivel de API ha tratado en su código, para que el error vuelva a aparecer 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 quejas de StrictMode sobre su error de red, estaba tratando de AsyncTask el problema de la serialización de AsyncTask en las versiones más recientes 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 usar el comportamiento multirruta predeterminado en dispositivos más antiguos:

      @TargetApi(11) static public  void executeAsyncTask(AsyncTask 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 API Nivel 11, Lint no se quejará. En este caso, eso funciona. Sin embargo, si modifiqué este método para hacer referencia a algo que no se agregó hasta API Nivel 14, entonces el error de Lint aparecería nuevamente, porque mi @TargetApi(11) dice que solo arreglé el código para trabajar en API Nivel 11 y debajo , no API Nivel 14 y abajo arriba.

    Usando @SuppressLint('NewApi') , perdería el error de Lint para cualquier nivel de API, independientemente de a qué se refiere mi código y de qué código de mi código se debe manejar.

    Por lo tanto, @TargetApi es la anotación preferida, ya que le permite decir a las herramientas de comstackción “OK, he solucionado esta categoría de problemas” de una manera más detallada.