Чтобы добавить некоторую гибкость и сохранить слабую связь между вашими классами, вы можете внести некоторые изменения в свой класс ServerConnectivity
, чтобы ваши вызовы могли выглядеть примерно так:
// push your splash screen on to the stack
//
final SplashScreen splashScreen = new SplashScreen();
UiApplication.getUiApplication().pushScreen(splashScreen);
_getDoc = new ServerConnectivity(this, new ServerConnectivityListener() {
public void onCompleted(ServerConnectivity sender) {
// display next screen
//
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
splashScreen.close();
UiApplication.getUiApplication().pushScreen(new NextScreen());
}
});
}
public void onError(ServerConnectivity sender) {
splashScreen.close();
// display error message, retry, etc...
}
});
Чтобы это работало,вам нужен интерфейс со следующим определением:
public interface ServerConnectivityListener {
void onCompleted(ServerConnectivity sender);
void onError(ServerConnectivity sender);
}
Итак, ваш класс ServerConnectivity
поддерживает ссылку на некоторый объект, который реализует интерфейс с именем ServerConnectivityListener
Это позволяет вам поддерживать слабую связь между классом субъектаи любые наблюдатели, которым нужно прослушивать события.
Внутри ServerConnectivity
вы бы вызывали методы слушателя примерно так:
// begin excerpt from above...
//
if(_topics == null || _notifications == null) {
_listener.onError(this);
} else {
_listener.onCompleted(this);
}
catch ( Exception e ){
System.out.println( e.toString() );
_listener.onError(this);
//
// end excerpt from above...