通過一個事件

此示例描述使用 Otto 事件匯流排傳遞事件

要在 Android Studio 中使用 Otto Event Bus,你必須在 modules gradle 檔案中插入以下語句:

dependencies {
    compile 'com.squareup:otto:1.3.8'
}

我們想要傳遞的事件是一個簡單的 Java 物件:

public class DatabaseContentChangedEvent {
    public String message;

    public DatabaseContentChangedEvent(String message) {
        this.message = message;
    }
}

我們需要一個匯流排來傳送事件。這通常是單例:

import com.squareup.otto.Bus;

public final class BusProvider {
    private static final Bus mBus = new Bus();

    public static Bus getInstance() {
        return mBus;
    }

    private BusProvider() {
    }
}

要傳送一個事件,我們只需要我們的 BusProvider 和它的 post 方法。這裡我們傳送一個事件,如果 AsyncTask 的動作完成:

public abstract class ContentChangingTask extends AsyncTask<Object, Void, Void> {

    ...

    @Override
    protected void onPostExecute(Void param) {
        BusProvider.getInstance().post(
            new DatabaseContentChangedEvent("Content changed")
        );
    }
}