100 votes

Ce qui est mieux : @SuppressLint ou @TargetApi ?

J’ai des problèmes dans mon application en ce qui concerne et ajouté de l’extrait de code qui désactive essentiellement la . Toutefois, les peluches se plaint de `` maintenant et propose d’ajouter soit

ou

à la `` événement de la vue.

Quelle méthode est préférée... ou font-ils fondamentalement la même chose ?

176voto

CommonsWare Points 402670

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X