通过一个事件

此示例描述使用 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")
        );
    }
}