Warum heißt es "veraltet" für eine Methode, wenn es die einzige ist, die ich für die ausgewählte API-Ebene verwenden kann?

8

In meinem Android-Manifest heißt das:

%Vor%

Aber wenn ich diesen Code schreibe, erhält die getNotification am Ende eine Warnung, dass die Methode "veraltet" ist:

%Vor%

Nun, das Problem ist, dass für API-Level 10, welches das Minimum ist, für das ich mich entwickle, getNotification die einzige ist, die es zu verwenden gilt. Die neuere Methode namens "build ()" ist für API-Ebene 16.

Warum bekomme ich die veraltete Warnung, obwohl sie die einzige ist, die ich verwenden kann und sollte? Man könnte meinen, dass sich die Warnung / Dokumente an den minSdkLevel anpassen sollten, nicht an die hohen Werte ...

    
Ted 10.12.2012, 19:31
quelle

5 Antworten

4
  

Warum erhalte ich die veraltete Warnung, obwohl sie die einzige ist, die ich verwenden kann und sollte?

Da Ihr Build-Ziel API-Level 16 oder höher ist, ist diese Methode veraltet.

  

Man könnte meinen, dass sich die Warnung / Dokumente an den minSdkLevel anpassen sollten, nicht an die hohen

In diesem Fall wäre einer falsch. Deprecation hat nichts mit minSdkVersion zu tun, genauso wenig wie in Standard-Java außerhalb von Android (wo deprecation vorhanden ist und minSdkVersion nicht tut).

Außerdem sollten Sie die Version von Notification.Builder des Android Support-Pakets verwenden (genannt NotificationCompat.Builder , da die native Version nicht in API Level 10 vorhanden ist, die Ihr Manifest angibt, dass Sie versuchen, diese zu unterstützen. build() sollte auf NotificationCompat.Builder existieren und auf allen gewünschten API-Ebenen funktionieren.

    
CommonsWare 10.12.2012, 19:39
quelle
3

Wenn Sie es "technisch korrekt" machen wollten, würden Sie etwas wie

tun %Vor%

Und dann kommentieren Sie die Methode mit TargetApi(16) . So nähern Sie sich generell diesen Problemen.

In Ihrem Fall sollten Sie stattdessen NotificationCompat.Builder im Kompatibilitätspaket verwenden.

    
Alex Lockwood 10.12.2012 19:44
quelle
3

Dies ist ein Beispiel zum Erstellen einer Benachrichtigung mit der Klasse NotificationCompat , die in allen APIs unterstützt wird

%Vor%     
Jorgesys 10.09.2013 22:16
quelle
1

Am besten ist es, die Kompatibilität Bibliothek zu verwenden und dieses Problem zu vergessen:

Ссылка

Auf diese Weise können Sie alle neuesten Funktionen der Benachrichtigungen genießen ...

    
android developer 10.12.2012 19:41
quelle
1

Ich glaube, die Warnung bezieht sich auf die Tatsache, dass Sie mit einem neueren SDK bauen (weil Ihre targetSDKVersion höher ist). Sie können also die neuere Methode verwenden, müssen jedoch vorsichtig sein, da Geräte, die unter der Ziel-API-Ebene, aber über der Mindest-API-Ebene liegen, nicht mit der neueren API funktionieren. Sie können die API-Ebene überprüfen, bevor Sie die neueren Aufrufe verwenden, um sie sicher zu verwenden.

Wenn Sie beispielsweise eine Android 4.1-Methode verwenden möchten, während Ihre MinSDK 2.3 ist, können Sie Folgendes tun:

%Vor%

In diesem Fall spielt die Warnung keine Rolle. Sie können der Klasse oder Methode ein @SuppressWarnings ("deprecation") hinzufügen.

    
gsingh2011 10.12.2012 19:34
quelle

Tags und Links