簡體   English   中英

Android應用程序事件處理

[英]Android application event handling

Android中是否有一組標准的Listener / Observer / Observable類用於管理Android中的應用程序事件?

我不是在討論UI或其他Android API事件,而是自定義應用程序事件,如GameOverEventLevelClearedEvent等。

是否有一個首選的接口來實現/擴展,以便我可以實現以下內容:

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 for EventListener。 :)

你有沒有嘗試過GreenRobot的EventBus

它基本上是用於處理應用程序范圍事件的eventBus的非常標准的實現。 它提供了非常簡潔的線程間通信。

非常類似於GWT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM