Frage

Auf Android 2.3.3 mache ich einen Massenimport in eine meiner SQLite-Tabellen, mithilfe der API-Methode:

SQLiteDatabase.insert(String table, String nullColumnHack, ContentValues values)

Es funktioniert gut, aber wenn es ist ein Datenbank-Fehler mit einer Zeile (z.B.constraint-Fehler) einen vollständigen stack-trace geschrieben, um Android Logcat, die schnell füllt.

Wie kann ich das ausschalten dieser stack-trace?

Ich schon Griff eine Ausnahme ausgelöst wird, aber der Logcat ist verschmutzt aus der SQLite-Bibliothek-code.

Ich bin besorgt über die Leistung auf mobilen Geräten.

  • Transaktionen für den import sind bereits aktiviert
  • vorinstallierte DB ist nicht möglich, da die Daten ändern können

Einschränkungen erzwungen werden soll, und ich werde Griff Verletzung, aber mit 20 Gewinnlinien stack-traces in Logcat für jeden Fall der Zuwiderhandlung multipliziert mit Hunderten von Verletzungen ist das, was ich will zu deaktivieren.

Leider habe ich auch keine erweiterten Konflikt-handling eingeführt mit Android Froyo, weil die app muss laufen auch auf älteren Geräten.

Cheers.

War es hilfreich?

Lösung

OK, ich habe gerade die Lösung gefunden wie folgt:

Ich habe die Verwendung einer anderen API-Methode (nicht SQLiteDatabase.insert()):

SQLiteDatabase.insertOrThrow(String table, String nullColumnHack, ContentValues values)

Nun, die Ausnahme wird ausgelöst, von der SQLite-Bibliothek, wie erwartet und keine stack-trace ausgegeben wird.

Andere Tipps

Genau herausfiltern irgendwelche Sachen, die Sie nicht interessieren, basierend auf die tag oder die Prozess-ID.Sie können es leicht tun in der Logcat-viewer in Eclipse, oder wenn Sie Logcat auf der Kommandozeile die Anleitung gibt es hier.

Es ist nicht-Verschmutzung.Es ist der Zweck der LogCat zu registrieren alles, was sich auf dem Gerät / emulator.

Wenn Sie möchten, heraus zu filtern und Ihre LogCat, ist es möglich in Eclipse (Sie können filtern durch log-tag, pid, oder durch log-level), so dass ein Weg, um unerwünschte Ausnahmen von einem LogCat-Fenster.

BEARBEITEN Wenn das Problem ist die Leistung (nach den Kommentaren), ich glaube nicht, dass Sie sich sorgen machen sollte.

  • Wenn Sie feststellen, schlechte Leistungen, die Sie gewinnen EINE MENGE mehr durch die Aktivierung von Transaktionen auf Ihren Stapel legen.
  • Auch, wenn es einfügen "ab-Daten" für Ihre Anwendung, Sie haben, als den Versand der apk-mit einem pre-geladen Datenbank?Anstelle von einfügen alles zur Laufzeit, Sie könnten nur Kopie einer vorhandenen Datenbank, die Sie selbst zubereitet.Keine Einschränkung problem mehr, und fast instant start für die Benutzer.Natürlich, wenn es ist dynamisch batch insert (basierend auf Benutzer-Eintrag oder externe Parameter definiert, die zur Laufzeit), ist es nicht möglich.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top