M
MrParse
Neues Mitglied
- 0
heyhey
ich hab da ein Problem.. Bzw. eine Lösung die aber sehr umständlich aussieht.
Also, ich habe eine App geschrieben, die in einem gegebenen Zeitintervall jede Sekunde ein Rechteck auf einem Canvas vergrößert. Hat prima geklappt dazu habe ich einen zweiten Thread mit der Funktion eines Timers erstellt. Da das Rechteck nur jede Sekunde vergrößert wurde, habe ich den Thread jetzt nur noch 1ms pausiert anstatt der vorherigen 1000 um das Rechteck gleichmäßig zu vergößern. Tja, jetzt hat das ganze bei einem Intervall von 8000ms aber nicht mehr 8 Sekunden sondern mehr als das doppelte gedauert... Nach Internetrecherchen bin ich darauf gekommen, dass der aufruf sleep(1) länger als 1ms dauert.
Jetzt hatte ich mehrere Lösungsansätze, der letzte Funktioniert zwar, kommt mir aber sehr umständlich vor:
1: Systemzeit vor und nach dem sleep-Aufruf speichern und die verstrichene Zeit um die differenz der 2 Systemzeiten erhöhen -> der Vorgang dauert 8 Sekunden, das Rechteck wird aber ungleichmäßig erhöht.
2: Über FPS und TPS die Performance anpassen -> gleichmäßige Vergrößerung aber dauert wieder länger als 8sec.
3: CountDownTimer initialisieren und jede ms die verstrichene Zeit erhöhen.
-> klappt
Aus der verstrichenen Zeit wird der Betrag errechnet, um den das Recheck vergrößert werden soll.
Jetzt habe ich jedoch einen Thread, der seinerseits wieder einen CountDownTimer initialisiert und so lange er läuft die onDraw-Methode meiner View aufruft, jedoch mit der verstrichenen Zeit, die er vom CountDownTimer bekommt.
Geht das nich einfacher? Kann man den sleep-Befehl nicht "genauer" durchführen etc?
Gruß MrParse
ich hab da ein Problem.. Bzw. eine Lösung die aber sehr umständlich aussieht.
Also, ich habe eine App geschrieben, die in einem gegebenen Zeitintervall jede Sekunde ein Rechteck auf einem Canvas vergrößert. Hat prima geklappt dazu habe ich einen zweiten Thread mit der Funktion eines Timers erstellt. Da das Rechteck nur jede Sekunde vergrößert wurde, habe ich den Thread jetzt nur noch 1ms pausiert anstatt der vorherigen 1000 um das Rechteck gleichmäßig zu vergößern. Tja, jetzt hat das ganze bei einem Intervall von 8000ms aber nicht mehr 8 Sekunden sondern mehr als das doppelte gedauert... Nach Internetrecherchen bin ich darauf gekommen, dass der aufruf sleep(1) länger als 1ms dauert.
Jetzt hatte ich mehrere Lösungsansätze, der letzte Funktioniert zwar, kommt mir aber sehr umständlich vor:
1: Systemzeit vor und nach dem sleep-Aufruf speichern und die verstrichene Zeit um die differenz der 2 Systemzeiten erhöhen -> der Vorgang dauert 8 Sekunden, das Rechteck wird aber ungleichmäßig erhöht.
2: Über FPS und TPS die Performance anpassen -> gleichmäßige Vergrößerung aber dauert wieder länger als 8sec.
3: CountDownTimer initialisieren und jede ms die verstrichene Zeit erhöhen.
-> klappt
Aus der verstrichenen Zeit wird der Betrag errechnet, um den das Recheck vergrößert werden soll.
Jetzt habe ich jedoch einen Thread, der seinerseits wieder einen CountDownTimer initialisiert und so lange er läuft die onDraw-Methode meiner View aufruft, jedoch mit der verstrichenen Zeit, die er vom CountDownTimer bekommt.
Geht das nich einfacher? Kann man den sleep-Befehl nicht "genauer" durchführen etc?

Gruß MrParse