Android/Java TimerTask sehr genau benötigt

  • Antworten:1
Alfred Banause
  • Forum-Beiträge: 15

14.02.2013, 20:37:58 via Website

Hallo an alle,

gibt es in Java /Android einen sehr genauen TimerTask?

Ziel:
Ich erhalte meine Daten per MC und will sie GENAU alle 20 ms auf dem
Bildschirm darstellen/aktualisieren.

mit dem normalen TimerTask funktioniert es nicht, da der nicht
gewährleistet, dass er GENAU alle 20 ms die Aktualisierung durchführt
(wurde mit Oszi geprüft).

Gibt es hier ein paar Ideen, wie man das Problem lösen könnte?


Viele Grüße,

Banause

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

15.02.2013, 08:54:18 via Website

Da Android kein Real-Time OS ist, wirst Du es nie GENAU auf 20ms trimmen können.
Du kannst dich diesem Wert höchstens möglichst genau nähern.
Eine Möglichkeit hierzu wäre eine Art Over-Sampling, also einen eigenen Thread mit einer höheren zeitlichen Auflösung laufen zu lassen und bei jedem Durchlauf zu prüfen, ob schon 20ms verstrichen sind und eine Aktualisierung erfolgen muss.
Aber auch wenn du in deinem Code alle 20ms eine Aktualisierung in Auftrag gibst, weißt du idR immernoch nicht sicher wann diese Aktualisierung tatsächlich auf dem Bildschirm zu sehen ist, weil das AndroidOS die Repaint-Zyklen auch selbst organisiert, selbst puffert und bei hoher Systemlast auch einzelne Frames weglässt, um Lags zu verhindern (und durch Ruckeln zu ersetzen).

Antworten