J'ai des problèmes dans mon application concernant StrictMode et a ajouté de l'extrait de code que, fondamentalement, désactive le StrictModeHelper
Les programmeurs talentueux de fixer leurs réseaux de bug.
La méthode est préférée ..ou sont-ils fondamentalement faire de même?
@TargetApi
et @SuppressLint
ont le même noyau effet: ils suppriment les Peluches d'erreur.
La différence est que, avec @TargetApi
, vous déclarez, par le biais du paramètre, ce niveau API que vous avez abordé dans votre code, le message d'erreur peut apparaître à nouveau si vous modifiez ultérieurement la méthode pour essayer de référencement de quelque chose de plus récent que le niveau API cité en @TargetApi
.
Par exemple, supposons que, au lieu de bloquer l' StrictMode
des plaintes à propos de votre réseau de bug, vous étiez en train de travailler autour de la question de l' AsyncTask
sérialisées sur les nouvelles versions d'Android. Vous avez une méthode de ce genre dans votre code d'opter pour le pool de threads sur les périphériques les plus récents et utiliser la valeur par défaut multithread comportement sur des appareils plus anciens:
@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);
}
}
Ayant @TargetApi(11)
signifie que si les Peluches détecte que je suis en utilisant quelque chose de plus récent que mon android:minSdkVersion
, mais jusqu'à l'API de Niveau 11, les Peluches ne s'en plaindra pas. Dans ce cas, ça marche. Si, toutefois, j'ai modifié cette méthode pour faire référence à quelque chose qui n'a pas été ajoutés jusqu'à ce que l'API de Niveau 14, puis la fibre d'erreur apparaît de nouveau, parce que mes @TargetApi(11)
d'annotation dit que je ne fixe que le code fonctionne sur les API de Niveau 11 et ci-dessous, pas d'API de Niveau 14 et ci-dessous.
À l'aide de @SuppressLint('NewApi')
,, je perdrais la fibre d'erreur de toutes les API de niveau, indépendamment de ce que mon code de références et de ce que mon code est mis en place pour gérer.
Par conséquent, @TargetApi
est le préféré d'annotation, car il vous permet d'informer les outils de construction "OK, j'ai corrigé cette catégorie de problèmes" dans une plus fine de la mode.