Ho un problema, non so come capire quale evento Timer avviene quanto i Timer in questione sono in un Array.
B4X:
Sub Process_Globals
Dim t0,t1,t2,t3,t4 As Timer
Dim Timer1() As Timer
End Sub
Sub Pippo
Timer1= Array As Timer (t0,t1,t2,t3,t4)
For c = 0 To 4
Timer1(c).Initialize("Timer1",SetIntervallo)
Timer1(c).Enabled = True
Next
End Sub
Con il codice qui sotto non riesco a sapere di chi è l'evento, forse non si può fare perchè il Timer è primo del ".Tag"?
B4X:
Sub Timer1_Tick
Dim Send As Timer
Send = Sender
msgbox (Send,"")
End Sub
Mi sa che con 5 timer la tua app avrà il record per intasamento e durata minima della batteria
Potresti usarne uno solo, azzerarlo dopo x secondi ed abbinare operazioni a determinati secondi.
(avevo fatto un esempio qua: http://www.b4x.com/forum/basic4android-updates-questions/12319-odometer.html#post69251 )
Non puoi usare dei flags per sapere da dove arriva il comando?
In verità uso già 2 timer a cui volevo aggiungerne altri per funzioni diverse, non sapevo che potessero creare i problemi che mi hai illustrato.
Comunque credo di aver appena trovato la soluzione al problema usando in tutto soltanto 2 timer. Il primo è fondamentale dove contano anche i millesimi di secondo perchè l'intervallo si riduce ad ogni ciclo.
Il secondo invece è meno importante in termini di millisecondi, così potrei ad esempio impostarlo con un intervallo di 250 dove all'interno tramite delle variabili in array creo io gli eventi utilizzando il DateTime.Now.
L'idea e' giusta, dobbiamo solo trovare una sostituzione x ".Tag".
Spesso e' possibile modificare l'intervallo un po', per capire quale Timer ha causato l'evento:
B4X:
'Init alcuni Timer:
t0.Interval = 1000 + 0 'ID: 0
t1.Interval = 1000 + 1 'ID: 1
t2.Interval = 1000 + 2 'ID: 2
'...
Sub Timer_Tick
Dim t As Timer
Dim ID As Int
t = Sender
ID = t.Interval - 1000 'calcolare l'ID
MsgBox ("Timer# " & ID, "")
End Sub
L'idea e' giusta, dobbiamo solo trovare una sostituzione x ".Tag".
Spesso e' possibile modificare l'intervallo un po', per capire quale Timer ha causato l'evento:
B4X:
'Init alcuni Timer:
t0.Interval = 1000 + 0 'ID: 0
t1.Interval = 1000 + 1 'ID: 1
t2.Interval = 1000 + 2 'ID: 2
'...
Sub Timer_Tick
Dim t As Timer
Dim ID As Int
t = Sender
ID = t.Interval - 1000 'calcolare l'ID
MsgBox ("Timer# " & ID, "")
End Sub
Grazie molte del tuo suggerimento, ero però giunto anch'io alla stessa conclusione. Timo però, mi ha fatto riflettere sul fatto se ho davvero bisogno di così tanti Timer. Penso di aver comunque trovato la soluzione che fa al caso mio.
Dato che i Timer dell'array che volevo creare avrebbero un intervallo che comunque per tutti sarebbe un multiplo di 250 ad esempio, creerò un solo Timer con intervallo di 250 appunto dove grazie alla funzione DateTime.Now potrò gestite tutti questi SimilTimer che voglio, anche con intervalli diversi purchè sempre multipli di 250 millisecondi.