Originariamente inviato da interarete
Ci sono diverse ragioni per cui il codice che hai scritto non può funzionare.
Nel Task non calcoli l'ora e i minuti correnti, ma quelli del momento in cui istanzi la classe. Infatti crei un oggetto Calendar nel costruttore e poi continui a prendere da lì ora e minuti; per averli aggiornati devi invece istanziare ogni volta un nuovo Calendar.
vediamo se ho capito: chiamo il costruttore di Alarm il quale da un istanza della classe Calendario a cal alle 20:00 per esempio.
Quando voglio l'ora attuale mi viene stampata 20:00 perchè a quest'ora è stata istanziata la classe. Ho capito bene?
L'intervallo di esecuzione del Task lo hai impostato a 60 secondi e non 30 come vorresti tu; devi mettere s=30.
Ok distrazione
Dopo aver fatto partire il timer, tu stampi ora e minuti facendoteli passare dal task, ma se vuoi stamparli ad ogni esecuzione del task, le stampe le devi mettere nel metodo run() del task stesso.
In realtà le stampe delle ore le avevo messe per capire se il passaggio avveniva correttamente fra la classe AlarmTask e Alarm Execute.
Infine, la verifica del raggiungimento dell'ora desiderata la esegui una volta sola, all'inizio.
Per eseguirla di continuo, puoi ad esempio, dopo aver fatto partire il task, fare un loop infinito la cui condizione di uscita sia appunto il raggiungimento dell'ora dell'allarme.
Si.
grazie vado subito a provare i tuoi consigli.
Ciao,