34 votes

L'annotation @TargetApi ne concerne-t-elle qu'un seul niveau d'Api ou plus ?

J'utilise @TargetApi(23) dans mon application.

@TargetApi(23)
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        onAttachToContext(context);
    }

    @SuppressWarnings("deprecation")
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            onAttachToContext(activity);
        }
    }

    protected void onAttachToContext(Context context) {

    }

Mais je n'arrive pas à comprendre quelque chose : L'annotation @TargetApi(23) signifie "seulement pour le niveau 23 de l'Api" ou "pour le niveau 23 de l'Api et plus" ? Par exemple, si le niveau d'Api du dispositif est 24, la méthode onAttach(Context context) est-elle appelée ?

30voto

GoRoS Points 821

TargetApi est uniquement destinée à l'outil de vérification et n'a aucun effet sur le temps d'exécution. Si vous utilisez des méthodes API disponibles uniquement sur 23 dans votre méthode et que vous ne déclarez pas la TargetApi, vous obtiendrez simplement des avertissements indiquant que vous utilisez des API non disponibles dans votre version minimale du SDK. Il est de votre responsabilité d'appeler cette méthode avec cohérence en étant conscient du niveau d'API à partir duquel elle sera appelée.

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