在Android中,是否有一组标准的Listener/Observer/Observable类来管理应用程序事件?
我不是在谈论UI或其他Android API事件,而是自定义应用程序事件,例如GameOverEvent、LevelClearedEvent等。
是否有首选接口可实现/扩展,以便我可以实现以下内容:
public void addGameOverListener(GameOverListener listener)
在Android中,是否有一组标准的Listener/Observer/Observable类来管理应用程序事件?
我不是在谈论UI或其他Android API事件,而是自定义应用程序事件,例如GameOverEvent、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。 :)