Ich habe Probleme in meiner App in Bezug auf StrictMode und habe das Code-Snippet hinzugefügt, das den StrictModeHelper grundsätzlich deaktiviert
Bitte beheben Sie den Netzwerkfehler.
Welche Methode wird bevorzugt? Oder machen sie im Grunde das Gleiche?
@TargetApi
und @SuppressLint
haben den gleichen Kerneffekt: Sie unterdrücken den Flusenfehler.
Der Unterschied besteht darin, dass @TargetApi
Sie über den Parameter angeben, welche API-Ebene Sie in Ihrem Code angesprochen haben, sodass der Fehler erneut auftreten kann, wenn Sie die Methode später ändern, um zu versuchen, auf etwas zu verweisen, das neuer ist als die angegebene API-Ebene @TargetApi
.
Angenommen StrictMode
, Sie haben versucht, das Problem der AsyncTask
Serialisierung auf neueren Android-Versionen zu umgehen, anstatt die Beschwerden über Ihren Netzwerkfehler zu blockieren . Sie haben eine solche Methode in Ihrem Code, um sich auf neueren Geräten für den Thread-Pool zu entscheiden und auf älteren Geräten das Standard-Multithread-Verhalten zu verwenden:
@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);
}
}
Mit @TargetApi(11)
bedeutet , dass wenn Lint erkennt , dass ich etwas mit neuer als meine android:minSdkVersion
, aber bis zu API Ebene 11, Lint wird nicht beschweren. In diesem Fall funktioniert das. Wenn ich diese Methode jedoch so geändert habe, dass sie auf etwas verweist, das erst auf API-Ebene 14 hinzugefügt wurde, wird der Lint-Fehler erneut @TargetApi(11)
angezeigt , da in meiner Anmerkung angegeben ist, dass ich den Code nur so korrigiert habe , dass er auf API-Ebene 11 und darunter funktioniert , nicht API Level 14 und darunter .
Bei Verwendung @SuppressLint('NewApi')
würde ich den Lint-Fehler für jede API-Ebene verlieren , unabhängig davon, worauf mein Code verweist und wofür mein Code eingerichtet ist.
Daher @TargetApi
ist dies die bevorzugte Anmerkung, da Sie den Build-Tools "OK, ich habe diese Kategorie von Problemen behoben" genauer mitteilen können.