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