public void StartTime(){ Log.d("STARTTIME", "STARTTIME"); Runnable runnable=new Runnable(){ @Override public void run() { Intent intent=new Intent(getApplicationContext(),Form.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }; Global.handler.postDelayed(runnable, 5000); SharedPreferences.Editor editor=SP.edit(); editor.putBoolean("alarmon", true); editor.commit(); if(onAlarmChangeListener!=null)onAlarmChangeListener.AlarmChange();In blu ho marcato il cambiamento del setting "alarmon" a "true" quando viene inizializzato l'alarm.
In rosso, invece, l'attivazione dell'evento AlarmChange.
In MainActivity, non appena si ha il binding del TimerService bisogna desumere lo stato di AlarmOn del TimerService stesso.
Viene impostato il listener su TimerService e si dà corpo all'evento AlarmChange.
ServiceConnection mConnection=new ServiceConnection(){ @Override public void onServiceConnected(ComponentName name, IBinder service) { LocalBinder bnd=(LocalBinder)service; mService=bnd.getService(); mBound=true; mService.setOnAlarmChangeListener(new OnAlarmChangeListener(){ @Override public void AlarmChange() { if(SP.getBoolean("alarmon", true)){ semaforo.setBackgroundResource(R.drawable.tondinoverde); bttStart.setEnabled(false); bttStop.setEnabled(true); }else{ semaforo.setBackgroundResource(R.drawable.tondinorosso); bttStart.setEnabled(true); bttStop.setEnabled(false); } } });Al binding, ossia alla riapertura di MainActivity, si entra in ascolto di AlarmChange.
Ora, in TimerService, AlarmChange() entra in azione anche quando viene impostato il listener:
public void setOnAlarmChangeListener(OnAlarmChangeListener listener){ onAlarmChangeListener=listener; onAlarmChangeListener.AlarmChange(); }Qui è inutile porre la condizione "se onAlarmChangeListener esiste", in quanto questa è proprio la funzione che lo imposta. Dovrebbe funzionare...
Nessun commento:
Posta un commento