【问题标题】:RxJava/RxAndroid - Infinite Stream of Events from SensorsRxJava/RxAndroid - 来自传感器的无限事件流
【发布时间】:2016-02-24 20:05:05
【问题描述】:

我有一个应用程序可以监控传感器的事件、转换它们并需要向订阅者推送上游。

例如,使用android.location.LocationManager 进行位置更改。转换可能包括使用原始lat/longGeoCoder 来获取Address

如何为我的显示器 (LocationListener) 和发布者建模?

class MyLocationListener implements LocationListener {
    void onLocationChanged(Location l) {
        //Get Address using GeoCoder
    }
}


class MetaAPI {
    Observable<Address> address() {
        return Observable.create({what}); //<-- What should I add here?
        //Need to glue MyLocationManager and MetaAPI
    }
}

//So that I can use like this -->
public AddressObservation {
    void monitor() {
        metaApi.address()
            .subscribe(...)
            ...;
    }
}

【问题讨论】:

    标签: android rx-java reactive-programming rx-android


    【解决方案1】:

    您可以为此目的使用Subject。这只是主要思想,没有任何设计考虑(根据您的情况调整):

    class MyLocationListener implements LocationListener {
        void onLocationChanged(Location l) {
            //Get Address using GeoCoder
            MetaAPI.subject.onNext(null /* actual address object */);
        }
    }
    
    class MetaAPI {
    
        static Subject<Address, Address> subject = PublishSubject.<Address>create().toSerialized();
    
        Observable<Address> address() {
            return subject;
        }
    }
    

    【讨论】:

    • 让我试一试。据我了解Subject = Observable + Observer 组合。
    • @MasterGaurav 正确,SubjectObservable 的事实使您可以将其作为一个返回,而不会将此实现细节暴露给 address() 方法的客户。
    • 是的...我的意思。
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    相关资源
    最近更新 更多