AsyncTask warten lassen

  • Antworten:6
  • Bentwortet
p a
  • Forum-Beiträge: 131

24.11.2011, 16:21:11 via Website

Hi

ich würd gern meinen AsyncTask eine Sekunde warten lassen.
Bekomme allerdings beim Aufruf von wait(long milli) diesen Fehler

111-24 15:46:29.240: VERBOSE/Exception(25800): java.lang.IllegalMonitorStateException: object not locked by thread before wait()
211-24 15:46:29.240: VERBOSE/Exception(25800): at java.lang.Object.wait(Native Method)
311-24 15:46:29.240: VERBOSE/Exception(25800): at java.lang.Object.wait(Object.java:395)
411-24 15:46:29.240: VERBOSE/Exception(25800): at aha.pa.kommunikation.Json.liesJsonProducts(Json.java:389)
511-24 15:46:29.240: VERBOSE/Exception(25800): at aha.pa.kommunikation.Json$ProductTask.doInBackground(Json.java:108)
611-24 15:46:29.240: VERBOSE/Exception(25800): at aha.pa.kommunikation.Json$ProductTask.doInBackground(Json.java:1)
711-24 15:46:29.240: VERBOSE/Exception(25800): at android.os.AsyncTask$2.call(AsyncTask.java:185)
811-24 15:46:29.240: VERBOSE/Exception(25800): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
911-24 15:46:29.240: VERBOSE/Exception(25800): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
1011-24 15:46:29.240: VERBOSE/Exception(25800): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
1111-24 15:46:29.240: VERBOSE/Exception(25800): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
1211-24 15:46:29.240: VERBOSE/Exception(25800): at java.lang.Thread.run(Thread.java:1019)

kann mir da mal grad jemand weiterhelfen?

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

24.11.2011, 17:27:30 via Website

ja thread.sleep() geht sicher,

aber würdest du uns mal sagen, warum du das machen willst? niemand will wartezeiten haben und die dann künstlich zu erzeugen ist im normalfall nicht gut

swordiApps Blog - Website

Antworten
p a
  • Forum-Beiträge: 131

25.11.2011, 08:44:05 via Website

Ist jetzt die einfachste Variante kurz zu warten bis die letzte Transaktion abgeschlossen ist und dann die Datenbank zu schliessen, als jetzt nochmal groß an der Struktur der App rumzubasteln und die Transaktionen dauern sowieso knapp 16 Sekunden, da macht es auch nix wenn ich ihn nochmal 500ms warten lasse.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

25.11.2011, 09:54:27 via Website

Und wenn das auf einem langsamen Gerät länger dauert? z.B. wenn es grade durch eine andere App stark ausgelastet wird?
Man sollte sich nie auf Laufzeiten verlassen, und schon garnicht auf welche, die man durch Ausprobieren ermittelt hat.

Bin da jetzt grad nicht im Thema, aber wenn du eine Transaktion ordnunggemäß beendest, müsste sich die Datenbank doch sofort schliessen lassen.

— geändert am 25.11.2011, 09:55:18

Antworten
p a
  • Forum-Beiträge: 131

25.11.2011, 10:18:39 via Website

ja, das ist mir so schon klar, mein Problem ist an der Stelle nur dass die Transaktion eben noch nicht beendet ist bevor er versucht die Datenbank zu schliessen

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

25.11.2011, 10:37:49 via Website

hmm das klingt sehr komisch.

ich würde da nochmal nachforschen. das verhalten ist irgendwie unlogisch. die transaktion und das schließen passieren ja sequentiell. von daher kann es da ja kein problem geben

swordiApps Blog - Website

Antworten