Java Reference
In-Depth Information
{
System.out.println("CounterClientActivator.stop");
if(thread != null)
{
thread.interrupt();
thread = null;
}
if(ref != null)
{
context.ungetService(ref);
System.out.println(" with ungetService");
}
}
}
class CounterThread extends Thread
{
private Counter counter;
public CounterThread(Counter counter)
{
this.counter = counter;
}
public void run()
{
try
{
while(!isInterrupted())
{
String output = counter.version() + " (" +
counter.increment() + ")";
System.out.println(output);
sleep(2000);
}
}
catch(InterruptedException e)
{
}
}
}
Das Beschaff en des Objekts aus der Registratur erfolgt in zwei Schritten, wobei dazu die
zwei generischen Methoden getServiceReference und getService der Schnittstelle Bundle-
Context verwendet werden:
public <S> ServiceReference<S> getServiceReference(Class<S> clazz);
public <S> S getService(ServiceReference<S> reference);
Als Parameter von getServiceReference gibt man die Klasse oder Schnittstelle an, nach der
gesucht wird. Die Angabe kann in Form eines Strings oder in Form eines Class-Objekts
erfolgen (oben ist die Signatur für die zweite Variante gezeigt). Zurückgegeben wird nicht
das Objekt, sondern ein typparametrisiertes ServiceReference-Objekt. Wenn man dieses
ServiceReference-Objekt als Parameter beim Aufruf von getService angibt, erhält man das
in der Registratur angemeldete Objekt zurück. Wie in Listing 9.5 zu sehen ist, muss man
das von getService gelieferte Objekt nicht auf Counter casten, da man als Suchbegriff die
 
Search WWH ::




Custom Search