Mehrere Timer über mehrere Activities hinweg ticken lassen

T

t00mek

Neues Mitglied
0
Hallo zusammen!

Nach viel googeln, lesen und try&error wende ich mich mit meinen Fragen an Euch:

Das Vorhaben:
Mehrere Timer in der MainActivity (A) sollen jeweils einzeln mit jeweils mehreren Parametern, die über weitere Activities (B>C>D) gewählt werden können, gestartet werden können. Anschließend sollen die Timer in A überwacht und bei Ablauf wieder neu gestartet werden können.
Die MainAcitivity ist diejenige Activity, die hauptsächlich im Vordergrund laufen soll.
Es handelt sich um eine rein private App, die nur auf einem 7" Tablet laufen wird.

Das hab ich schon:
Per Button wird einer der Timer gewählt A>B
Parameter in B werden gewählt B>C
Parameter in C werden gewählt C>D
Zusammenfassung der Auswahl wird angezeigt D
Von dort aus wird wieder A aufgerufen und der Timer gestartet D>A (dazu habe ich FLAGS genutzt).
Es hat in einer einzelnen Activity auch schon funktioniert, dass die Timer unabhängig voneinander laufen.

Problem:
Die Timer starten immer wieder von Neuem und laufen nicht weiter, wenn ich über A>B>C>D>A einen neuen Timer starten möchte. Habe es schon mit den Flags FLAG_ACTIVITY_SINGLE_TOP und FLAG_ACTIVITY_CLEAR_TOP versucht sowie in A über onResume() und onNewIntent() versucht. Habe A auch schon auf launchMode=singleTOP gesetzt.

Fragen:
Hat jemand Ideen, was ich machen kann, damit die Timer weiterlaufen, nachdem ich A verlasse, um weitere Timer zu starten?
Macht es vllt Sinn auf selectContentView zu wechseln?

Gruß
t00mek
 
Hallo!

Ich habe an dich mehrere Fragen:

- Laufen die Timer im Bereich von wenigen Minuten oder können das viele Stunden sein?

- Sollen die Timer einen Reboot überleben und automatisch wieder gestartet werden?

- Läuft pro Activity nur ein Timer und es geht dir Kern nur darum, wie man bei der Rückkehr den "alten" Timerstand wieder setzt?
 
Hi!

- die Timer sollen max. 30 Minuten laufen. In der Activity B wählt aber der Benutzer grundsätzlich nur zwischen 5, 10 und 20 Minuten

- Reboot oder Neustart der Anwendung sind irrelevant. Auch abfangen von Anrufen oder ähnliches. Das Tablet wird nur für diesen einen Zweck genutzt

- in Activity A sollen bis zu 14 Timer gleichzeitig laufen, später evtl. mehr. Mir geht es darum, dass die Timer auch dann weiterlaufen, wenn ich in B, C und D und dann wieder in A wechsele.
 
Ok,

ich skizziere dir eine mögliche Lösung. (Pseudocode)

Irgendwo hast in A deine List<Timer> ... oder ähnlich.

Irgendwo machst du dein startActivity() für B, C, D. Das tauscht du aus durch
startActivityForResult( ...) .

Vor dem startActivityForResult() brauchst du folgenden Code

1) Du speicherst dir die Uhrzeiten, wann die
Liste der Timer ablaufen würden.

T1 -> 19.10.2014 : 14:40:30
T2 -> 19.10.2014 : 14:44:30
T3 -> 19.10.2014 : 14:49:30
...

in einer List<DateTime>

2) Du stoppst alle Timer.

-> Dann kommt startActivityForResult und es wird B oder C oder D ausgeführt.

In A überschreibst du folgendes Event: onActivityResult()

Wenn also B, C oder D beendet wird:

1) Du holst dir die aktuelle Uhrzeit.

2) Über die Liste der vorher gespeicherten Uhrzeiten schaust du nach, welche Timer
abgelaufen sind -> und feuerst die Events.

3) Du bildest Differenzen zwischen aktueller Uhrzeit und
den Uhrzeiten in der Zukunft, die noch nicht abgelaufen sind
und schaltest dafür neue Timer.
 
danke für Deine ausführliche Antwort! Genau das wäre jetzt auch mein Workaround gewesen, ich hatte aber gehofft, dass ich die Timer im Hintergrund laufen lassen kann ohne jedes Mal wild mit Zeiten rechnen zu müssen...

Danke Dir!

Gruß
Thomas
 
Das kannst du machen - würde ich aber nicht - denn wirtschaften mit dem Akku gehört zur Android Programmierung ;)
 
:-D auch der Akku wäre vernachlässigbar, vor allem weil die Timer fast immer laufen sollen und die anderen Activities immer nur für sehr kurze Zeit aufgerufen werden...

Gäbe es dafür tatsächlich auch eine Lösung? Wenn ja, wie?

...ansonsten fange ich schon mal mit dem Workaround an.
 

Ähnliche Themen

S
Antworten
9
Aufrufe
1.239
swa00
swa00
S
Antworten
4
Aufrufe
4.615
mblaster4711
mblaster4711
M
Antworten
3
Aufrufe
859
maksimilian
M
Zurück
Oben Unten