Ho problemi nella mia app per quanto riguarda StrictMode e ho aggiunto lo snippet di codice che sostanzialmente disabilita StrictModeHelper
Correggi il bug di rete.
Quale metodo è preferito .. o fondamentalmente stanno facendo lo stesso?
@TargetApi
e @SuppressLint
hanno lo stesso effetto principale: sopprimono l'errore Lint.
La differenza è che con @TargetApi
, dichiari, tramite il parametro, quale livello API hai indirizzato nel tuo codice, in modo che l'errore possa apparire di nuovo se in seguito modifichi il metodo per provare a fare riferimento a qualcosa di più nuovo del livello API citato in @TargetApi
.
Ad esempio, supponi che, invece di bloccare i StrictMode
reclami sul tuo bug di rete, stavi cercando di aggirare il problema della AsyncTask
serializzazione sulle versioni più recenti di Android. Hai un metodo come questo nel tuo codice per attivare il pool di thread sui dispositivi più recenti e utilizzare il comportamento multithread predefinito sui dispositivi meno recenti:
@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);
}
}
Avere @TargetApi(11)
significa che se Lint rileva che sto utilizzando qualcosa di più nuovo del mio android:minSdkVersion
, ma fino al livello API 11, Lint non si lamenterà. In questo caso, funziona. Se, tuttavia, ho modificato questo metodo per fare riferimento a qualcosa che non è stato aggiunto fino al livello API 14, l'errore Lint apparirà di nuovo, perché la mia @TargetApi(11)
annotazione dice che ho corretto il codice solo per funzionare su API Level 11 e inferiore , non API livello 14 e sotto sopra.
Utilizzando @SuppressLint('NewApi')
, perderei l'errore Lint per qualsiasi livello API, indipendentemente da ciò che fa riferimento il mio codice e da ciò che il mio codice è impostato per gestire.
Quindi, @TargetApi
è l'annotazione preferita, in quanto ti permette di dire agli strumenti di costruzione "OK, ho risolto questa categoria di problemi" in modo più dettagliato.