0

現在、 FirebaseMessagingServiceから MainActivity にEventBusデータを転送するために使用していますが、複雑さが増すにつれてこれは難しくなり、複数の通知を受け取った場合はどうなりますか? onMessageReceived一方で、

EventBus により、データ転送には 1 つの余分なクラスと 2 つのボイラー プレート関数のコストがかかります。

問題は、 Rxjava を使用して FirebaseMessagingService から Activity にデータを転送する方法です。このサービス全体をいくつかのオブザーバブルに変換する方法はありますか?

4

2 に答える 2

2

Service引き続き通知を受け取る必要があります。ただし、 aを使用して、次のPublishSubjectようなアイテムを公開できます。

class NotificationsManager {

    private static PublishSubject<Notification> notificationPublisher;

    public PublishSubject<Notification> getPublisher() {
        if (notificationPublisher == null) {
            notificationPublisher = PublishSubject.create();
        }

        return notificationPublisher;
    }

    public Observable<Notification> getNotificationObservable() {
        return getPublisher().asObservable();
    }
}

class FirebaseMessagingService {

    private PublishSubject<Notification> notificationPublisher;

    public void create() {
        notificationPublisher = NotificationsManager.getPublisher()
    }

    public void dataReceived(Notification notification) {
        notificationPublisher.onNext(notification)
    }
}

class MyActivity {

    private Observable<Notification> notificationObservable;

    public void onCreate(Bundle bundle) {
        notificationObservable = NotificationsManager.getNotificationObservable()

        notificationObservable.subscribe(...)
    }
}

編集:例を拡張しました。これは最良の方法ではなく、単なる例であることに注意してください

于 2016-11-14T12:51:03.593 に答える