Non importa ... trovato la risposta qui :)
http://www.javaworld.com/javaworld/javatips/jw-javatip10.html
incollare dall'articolo in modo da preservarlo:
sviluppatori dimestichezza nella event-driven il modello di programmazione di MS-Windows e il sistema X Window sono abituati a passare i puntatori di funzione che vengono invocati (cioè "richiamati") quando succede qualcosa. Il modello orientato agli oggetti di Java al momento non supporta i puntatori del metodo, e quindi sembra precludere l'utilizzo di questo comodo meccanismo. Ma non tutto è perduto!
Il supporto delle interfacce Java fornisce un meccanismo grazie al quale è possibile ottenere l'equivalente di callback. Il trucco è definire un'interfaccia semplice che dichiari il metodo che vogliamo invocare.
Ad esempio, supponiamo di voler ricevere una notifica quando si verifica un evento. Possiamo definire un'interfaccia:
public interface InterestingEvent
{
// This is just a regular method so it can return something or
// take arguments if you like.
public void interestingEvent();
}
Questo ci consente di controllare qualsiasi oggetto di classi che implementa l'interfaccia. Quindi, non dobbiamo preoccuparci di altre informazioni di tipo estraneo. Questo è molto più bello dell'hacking delle funzioni C trampolino che usano il campo dati dei widget per contenere un puntatore oggetto quando si usa il codice C++ con Motif.
La classe che segnalerà l'evento deve aspettarsi oggetti che implementano l'interfaccia InterestingEvent e quindi richiamare il interestingEvent() metodo appropriato.
public class EventNotifier
{
private InterestingEvent ie;
private boolean somethingHappened;
public EventNotifier (InterestingEvent event)
{
// Save the event object for later use.
ie = event;
// Nothing to report yet.
somethingHappened = false;
}
//...
public void doWork()
{
// Check the predicate, which is set elsewhere.
if (somethingHappened)
{
// Signal the even by invoking the interface's method.
ie.interestingEvent();
}
//...
}
// ...
}
In questo esempio, ho usato il somethingHappened predicato per monitorare se l'evento deve essere attivato. In molti casi, il fatto stesso che il metodo sia stato chiamato è sufficiente per giustificare la segnalazione di interestingEvent().
Il codice che desidera ricevere la notifica dell'evento deve implementare l'interfaccia InteressanteEventore e passare semplicemente un riferimento a se stesso al notificatore di eventi.
public class CallMe implements InterestingEvent
{
private EventNotifier en;
public CallMe()
{
// Create the event notifier and pass ourself to it.
en = new EventNotifier (this);
}
// Define the actual handler for the event.
public void interestingEvent()
{
// Wow! Something really interesting must have occurred!
// Do something...
}
//...
}
Questo è tutto quello che c'è da fare. Spero che usare questo semplice linguaggio Java renderà la transizione verso Java un po 'meno agitata.
Il paradagm iPhone è piuttosto diversa da quella di Android. Se spieghi cosa stai cercando di realizzare con questo, qualcuno potrebbe essere in grado di aiutarti a trovare il modo Android. –
Beh, sto usando un oggetto singleton che avvolge l'oggetto Android MediaPlayer e ha il proprio set di metodi per riprodurre una traccia specifica, mettere in pausa, riprodurre, ecc. Quello che voglio è che quando la traccia si ferma o si avvia, dovrebbe "inviare" una notifica "alle classi che fanno riferimento all'oggetto singleton per aggiornare l'immagine del pulsante di riproduzione a un'icona di pausa o a un'icona di riproduzione. Spero che questo abbia chiarito le cose? – Sid