Обработка событий приложения Android

Существует ли стандартный набор классов Listener / Observer / Observable в Android для управления событиями приложений в Android?

Я не говорю о пользовательских интерфейсах или других событиях API Android, а о специальных событиях приложений, таких как LevelClearedEvent , LevelClearedEvent и т. Д.

Есть ли предпочтительный интерфейс для реализации / расширения, чтобы я мог реализовать такие вещи, как:

 public void addGameOverListener(GameOverListener listener) 

Это легко, вам просто нужно создать свой собственный EventListener

 public interface onGameFinishedListener { public void onGameFinished(GameView gameView); } 

И некоторый класс, который имеет метод onGameFinished ()

 public abstract class GameView extends SurfaceView implements SurfaceHolder.Callback{ List<onGameFinishedListener> listeners; public GameThread gameThread; protected int width; protected int height; public GameView(Context context) { super(context); width = 320; height = 480; listeners = new ArrayList<onGameFinishedListener>(); } public abstract void init(); public void registerGameFinishedListener(onGameFinishedListener listener) { listeners.add(listener); } protected void GameFinished(GameView gameView) { for (onGameFinishedListener listener : listeners) { synchronized(gameThread.getSurfaceHolder()) { listener.onGameFinished(gameView); } } } } 

И затем вы реализуете onGameFinishedListener в своей деятельности или представлении, которое вы хотите сделать, когда игра заканчивается,

 public class RocketActivity extends GameActivity implements onGameFinishedListener { private final int MENU = 0; private final int END = 1; private final int CONFIRMATION = 2; private RelativeLayout layout; private RocketView rocketView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); layout = new RelativeLayout(this); rocketView = new RocketView(this); rocketView.registerGameFinishedListener(this); rocketView.init(); layout.addView(rocketView); setContentView(layout); } @Override public void onGameFinished(GameView gameView) { runOnUiThread(new Runnable() { @Override public void run() { showDialog(END); } }); } 

}

там. Не нужно полагаться на Android для EventListener. 🙂

Вы пробовали EventBus от GreenRobot ?

В основном это довольно стандартная реализация eventBus для обработки широкомасштабных событий приложений. Он обеспечивает связь между потоками, которая является довольно аккуратной.

Довольно похоже на то, что вы получаете за GWT