Ist ScheduleAtFixedRate alle 30ms eine große Belastung für den Akku?

  • Antworten:4
Harry
  • Forum-Beiträge: 52

17.10.2011, 09:30:21 via Website

Hallo Entwickler!

Ich habe ein App geschrieben, dass so ein paar Animationen hat. Diese Animationen muss ich selbst zeichnen und werden nur unter bestimmten Vorraussetzungen ausgeführt. Daher habe ich hier für einen ScheduleAtFixedRate-Thread, wo im Leerlauf (keine Animationen) nur 7 globale Variablen (ein Object auf null überprüfen und 6 booleans) alle 30 ms abgefragt werden.

Ist dies eine große Belastung für den Akku?

Alternativ könnte ich den Thread natürlich immer im Leerlauf beenden, und bei bedarf wieder starten. Aber das starten kostet ja Zeit und könnte Ruckeln verursachen.

Was meint ihr?

Gruß Harry

Antworten
Maximilian O
  • Forum-Beiträge: 990

17.10.2011, 16:41:00 via App

Also 30ms entspricht ja einem normalen Spiel. da kannst Du dir ja ausrechnen wie lange der Akku hält. Also warum muss das denn 30ms sein, kannst Du nicht eine vorgefertigte Animation verwenden?
MfG Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Harry
  • Forum-Beiträge: 52

17.10.2011, 19:42:38 via Website

Hallo,
die hier genannten Animationen sind alles Bewegungen in OpenGL, wo ich also nach jeder Positions veränderung einmal neu Rendern muss.
Damit es auch hübsch fürs menschliche Auge aussieht, render ich alle 30ms neu (das entspricht etwa 33 FPS).

Um konkreter zu werden:
Ich schubse OpenGL-Objecte auf dem Bildschirm herrum. Wenn ich sie mit dem Finger loslasse, sollen sie langsam abbremsen. Das wäre dann eine dieser Animationen.
Wenn ich nichts mache, passiert auf dem Bildschirm auch nichts und der 30ms-Scheduler läuft einfach durch die if-Anweisungen und mehr nicht.

Wenn es da bessere möglichkeiten gibt, höre ich das gern!

Gruß Harry

— geändert am 17.10.2011, 19:44:57

Antworten
Maximilian O
  • Forum-Beiträge: 990

18.10.2011, 15:23:03 via App

Leider kämpfen alle live wallpaper mit diesem Problem. Also das der Akku viel schneller leer ist als einem lieb ist.
Was mir nur einfällt, kannst Du das rendern noch einfach nur bei einem onclick ausfuhren?
mfg

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Harry
  • Forum-Beiträge: 52

18.10.2011, 23:57:19 via Website

Ja, das mache ich ja auch im Prinzip so. Nur nach Interaktionen durch den benutzer laufen Animationen für ein paar Sekunden. Danach läuft der Thread nur noch durch die if-Anweisungen und wartet auf Zuständen, in denen neue Animationen ausgeführt werden.

Die Alterntive wäre halt den Thread zu beenden und neu zu starten. Wodurch jedoch durch das recht lange dauernede Starten des Threads Verzögerungen entstehen.

Aber was ich mal probieren könnte ist, den Thread zu beenden und bei OnTouchDown den Thread wieder zu starten, da in den meisten situationen eine Animation erst bei OnTouchUp gestartet werden. Die Zeit dazwischen sollte reichen, um Verzögerungen zu eliminieren.

Antworten