【问题标题】:How to subscribe to and event in RxJava Android如何在 RxJava Android 中订阅和事件
【发布时间】:2016-09-03 14:13:27
【问题描述】:

我正在构建一个 Android 应用程序,并且是 Rxjava 的新手,有一个初学者的问题: 如何在活动开始时订阅事件,并在活动停止时关闭订阅?

我很困惑如何实现它。

【问题讨论】:

标签: android events rx-java publish-subscribe


【解决方案1】:

您必须创建PublishSubject 的实例并订阅它。当您想要发送和事件时,您需要调用PublishSubject 实例的onNext()

注意:您必须为每种类型的订阅持有一个实例。

首先你必须创建 EventSubscription 类来保存特定的PublishSubject 实例:

EventSubscription.java:

public class EventSubscription {
    private static EventSubscription instance;

    private PublishSubject<String> subject = PublishSubject.create();

    /**
     * Singleton
     */
    public static EventSubscription getInstance() {
        if (instance == null) {
            instance = new EventSubscription();
        }
        return instance;
    }

    /**
     * Pass any event down to event listeners.
     */
    public void setString(String eventName) {
        subject.onNext(eventName);
    }

    /**
     * Subscribe to this Observable. On event
     */
    public Observable<String> getEvents() {
        return subject;
    }
}

在您的活动中,您还需要持有一个订阅实例才能在活动停止时取消订阅。请参阅以下活动类:

public class MyActivity extends Activity {

    private Subscription mMySubscription;

    @Override
    public void onStart(){

        // Start the subscription
        mMySubscription = EventSubscription.getInstance().getEvents()
                .subscribe(new Action1<String>() {

                    @Override
                    public void call(String eventName){

                        // Handle new event
                    }
                });
    }

    @Override
    public void onStop(){

        if(mMySubscription != null && ! mMySubscription.isUnsubscribed()){

            // if your subscription already unsubscribed
            mMySubscription.unsubscribe();
        }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多