SQLiteAssetHelper NullPointerException nur auf einigen Geräten

8

Ich verwende die SQLiteAssetHelper-Bibliothek, um mit meinen App-DB-Vorgängen fertig zu werden, und sie funktioniert für fast jedes Telefon, mit dem ich getestet habe. Einige Benutzer mit Android 2.3.3 - 2.3.7 melden jedoch einen Absturz, wenn ein Aufruf zum Öffnen der Datenbank erfolgt. Ich vermute, dass dies auf ein Problem zurückzuführen ist, das beim ersten Kopieren der Datenbank aus dem Asset-Ordner auftritt (z. B. nicht genügend Speicherplatz im internen Speicher).

Helferklasse:

%Vor%

Handler Class (Ich setze einen Zähler auf Timeout nach 10s wenn db nicht geöffnet werden kann) :

%Vor%

Aufrufende Klasse:

%Vor%

Ausnahme:

%Vor%     
Amine Kadimi 19.12.2013, 23:04
quelle

2 Antworten

0

Möglicherweise haben die Benutzer ihren Speicher gelöscht oder sie haben keine SD-CARD?

Wahrscheinlich läuft es bei sporadischen Abstürzen.

** Haben Sie die oncreate- und onupgrade-Methoden implementiert?

Ich benutze den offenen Helfer. So habe ich nie Probleme beim Öffnen der Datenbank.

%Vor%

...

%Vor%

Viel Glück

    
danny117 16.01.2014 22:07
quelle
0

Diese Frage hatte keine akzeptierte Antwort, obwohl das OP darauf hinwies, dass es in den Kommentaren gelöst wurde. Also hier ist die Antwort:

Versuchen Sie nicht, die Datenbank mit einem AsyncTask zu kopieren, das von einer Methode aufgerufen wird (z. B. onCreate ), und versuchen Sie dann, ListView mit Daten aus der Datenbank in derselben Methode aufzufüllen. Wenn die AsyncTask nicht bis zu dem Zeitpunkt fertig ist, an dem ListView die Daten benötigt, wird eine NullPointerException ausgelöst.

Füllen Sie stattdessen ListView aus der onPostExecute -Methode von AsyncTask aus. Dadurch wird sichergestellt, dass die Datenbank das Kopieren beendet hat.

    
Suragch 11.04.2015 03:27
quelle

Tags und Links