RequiresApi vs TargetApi android Annotationen

Was ist der Unterschied zwischen RequiresApi und TargetApi ?

Beispiel in kotlin:

  • Android JobScheduler - kann keinen anhaltenden Job erstellen
  • Ändern Checkbox colorAccent in der Laufzeit programmgesteuert
  • Android Split String
  • QNetworkAccessManager - zuerst GET sehr langsam
  • Android ViewPager Polsterung / Rand zwischen Seitenfragmenten
  • Spalten in ListView Android
  •  @RequiresApi(api = Build.VERSION_CODES.M) @TargetApi(Build.VERSION_CODES.M) class FingerprintHandlerM() : FingerprintManager.AuthenticationCallback() 

    HINWEIS: FingerprintManager.AuthenticationCallback benötigt api M

    HINWEIS 2: Wenn ich nicht targetApi Lint schreibe mit Fehlerklasse brauche class requires api level 23...

  • Gradle-Synchronisierung fehlgeschlagen: Fehler beim Erstellen von Build Tools Revision 24.0.0 rc1
  • SetOnItemClickListener auf benutzerdefinierten ListView
  • Android: ActionBarSherlock Such-Widget
  • ActivityCompat.requestPermissions funktioniert nicht
  • Wie füge TextView in der Mitte von SeekBar Daumen hinzu?
  • Entfernen von AdMob aus App in Android Studio
  • 3 Solutions collect form web for “RequiresApi vs TargetApi android Annotationen”

    @RequiresApi – Zeigt an, dass das kommentierte Element nur auf der angegebenen API-Ebene oder höher aufgerufen werden soll.

    @TargetApi – Gibt an, dass Lint diesen Typ als Targeting auf eine gegebene API-Ebene behandeln sollte, egal was das Projektziel ist.

    Ähnlich wie das, was Mike gesagt hat, wie man in der Dokumentation sehen kann:

    Zeigt an, dass das annotierte Element nur auf der angegebenen API-Ebene oder höher aufgerufen werden soll.

    Dies ist im Hinblick auf die ältere @TargetApi-Annotation ähnlich, aber deutlich deutlicher, dass dies eine Anforderung an den Anrufer ist, anstatt verwendet werden, um "Warnungen" innerhalb der Methode zu unterdrücken, die die minSdkVersion übersteigen.

    Wie Sie hier sehen können, ist dies tatsächlich erzwingen, dass der Anrufer die API, die verwendet wurde, wenn Sie in diese Methode verwendet haben, zu überprüfen, anstatt nur die Warnung von Ihrem IDE / LINT.

    Sie können dies mit den @NonNull- oder @Null-Annotationen vergleichen, sie erzwingen, dass der Anrufer keine Nullwerte in die Funktion senden kann.

    Von den JavaDocs in https://developer.android.com/reference/android/support/annotation/RequiresApi.html :

    [@RequiresApi] Dies ist im Hinblick auf die ältere @TargetApi-Annotation ähnlich, aber deutlich deutlicher, dass dies eine Anforderung an den Anrufer ist, anstatt verwendet werden, um "Warnungen" innerhalb der Methode zu unterdrücken, die die minSdkVersion übersteigen.

    Ich nehme an, sie sind funktional gleichwertig, aber @RequiresApi scheint neuere zu sein und hat eine höhere Chance, um mehr Funktionalität zu erweitern.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.