2 Fragen über Dateioperationen und Aktualisierungen

T

thrawn80

Neues Mitglied
0
Falls jemand helfen könnte, wär super.

Erste Frage:

Ich habe bei mir Datum und Uhrzeit reingebastelt, dabei die beiden Sachen aus .getXXX und Calendar nach meinen Bedürftnissen angepasst.
Wie bekomme ich es am effizientesten hin, dass die Zeit sich alle Minute aktualisiert?

Zweite Frage:

Ich verwende 2 Datenbanken, die ich teilweise im Vorfeld erstellt habe und auf der SD-Karte abgelegt habe.
Die Query-Abfragen sind scheinbar teilweise recht rechenintensiv, nach Drücken eines Buttons dauert es ca. 2 Sek. bis er die Operationen ausführt.
Nun würde ich gerne die DBs zum Start des App in den Arbeitsspeicher oder wenigstens in den internen Speicher kopieren.
Wie komme ich da ran oder womit bekomme ich das ohne rooten hin?

Danke im Voraus.
 
Zu deiner ersten Frage, habe ich kürzlich erst was gespostet:
https://www.android-hilfe.de/forum/...-als-variable-einlesen.53329.html#post-722074
Sofern ich dich richtig verstanden habe, und du möchtest das jede Minute, dein Code, der die aktuelle Uhrzeit ausließt aufgerufen werden soll.

Zu deiner zweiten Frage kann ich dir nicht wirklich weiterhelfen. Du solltest auf jeden Fall sichergehen, dass dein sql query performant wie möglich ist. Also deine Datenbanken möglich denormalisiert halten, Joins vermeiden und die Bedingung möglichst weit einschränken.
Vielleicht würde es auch funktionieren, bereits beim App Start die SQL Querys abzusetzen, sodass dann bei Ausführung des Button Codes nur noch die Daten ausgewertet werden müssen. Sicherlich, du hast die Ladezeit dann am Start des Apps, aber das wird den Benutzer deutlich weniger frustrieren, als wenn das App mitten in der Ausführung "hängen" bleibt ;-)
 
Die Uhrzeit wird mitten im Hauptmenü als Textview angezeigt.
Ich möchte natürlich nicht, dass während der Wartezeit das ganze System steht und blockiert wird. Wird das nicht mit Sleep erreicht?


Zum Zweiten:
Ich hab mir mal die Zeiten ausrechnen lassen, die die SQL-Operationen so brauchen. Für das "where-like"Auslesen aus einer 100 Zeilen langen Tabelle braucht er 6-50ms, was nicht so dramatisch ist.
Aber das Schreiben von 3 (DREI) Werten in eine temporäre Tabelle dauert 180-700ms, die Werte schwanken teilweise extrem stark.
Da muß doch irgendwas faul sein.

Liegt es am Code oder dem verwendeten SQL-Befehl?

public static boolean mCreateEntryWorkingSheet(String dbname,
String tablename, String foodname, double amount, String unit) {
boolean dbcreateentry = false;
SQLiteDatabase db = null;
try {
String path = "/sdcard/nes/database/" + dbname + ".db";
db = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READWRITE);
db.execSQL("INSERT into " + tablename
+ " (name, menge, einheit) VALUES ('" + foodname + "', '"
+ amount + "', '" + unit + "')");
dbcreateentry = true;
} catch (SQLException exception) {
dbcreateentry = false;
}
db.close();
return dbcreateentry;
}
 
Ok, also ein insert mit 3 Werten sollte definitiv nicht mal annähernd 180 ms dauern.
Dein Code sieht aber auch nicht verdächtig aus. Hier hat jemand das gleiche Problem: Link

Und zum sleep: Richtig die Programmausführung wird angehalten, weshalb du diesen Code auch in einen extra Thread auslagern solltest. Andere Möglichkeit fällt mir spontan nicht ein. In Java gibt es ja so eine Art "Timer" wie in VB nicht, oder? ;)
 
Neues von der Front:

nachdem ich recherchiert habe, dass selbst das Schreiben von Bytes auf der SD-Karte 200ms dauern soll, habe ich mal testweise die DB im internen Speicher angelegt.
Und siehe da, die Gesamtzeit reduziert sich von mittleren 3400ms auf 300ms.

Pervers das Ganze... :angry:
 
Du hast ja in deinem /data/data/dein.package/ Ordner Schreibrechte :winki:
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
116
swa00
swa00
S
Antworten
4
Aufrufe
4.374
mblaster4711
mblaster4711
Muecke1982
Antworten
8
Aufrufe
1.032
Skyhigh
Skyhigh
Zurück
Oben Unten