android - Rxjava static generic utility method with transformer -
recently saw rxjavaarticle explaining transformers , highlighting how used reuse schedulers. tried use , inside same class, method works fine:
<t>observable.transformer<t, t> applyschedulers() { return new observable.transformer<t, t>() { @override public observable<t> call(observable<t> observable) { return observable .subscribeon(schedulers.io()) .unsubscribeon(schedulers.io()) .observeon(androidschedulers.mainthread()); } }; } i want move helper class static method can use in whole androidapp. when try use method of class
public class rxfunctions { public static <t>observable.transformer<t, t> applyschedulers() { return new observable.transformer<t, t>() { @override public observable<t> call(observable<t> observable) { return observable .subscribeon(schedulers.io()) .unsubscribeon(schedulers.io()) .observeon(androidschedulers.mainthread()); } }; } } inside class
public void requestloginstate() { restclient.requestloginstate() .compose(rxfunctions.applyschedulers()) .subscribe(new timbererrorsubscriber<loginstateresponse>() { @override public void oncompleted() { } ... it no longer recognise subscriber, error: cannot resolve method 'subscribe(anonymous com.example.util.rx.timbererrorsubscriber<com.example.network.retrofit.response.login.loginstateresponse>)'
i'm using java8without retrolambda. changing compose line to
.compose(this.<loginstateresponse> rxfunctions.applyschedulers()) results in error loginstate type saying reference parameters not allowed here
i'm new rxjava , grateful advice.
edit: android support java 8
you using java8 on android, android not support java8 without plugins retrolambda, i'll asume compiling java6 (since java7 works kitkat , above).
in scenario, might need make explicit parametric type of applyschedulers. believe tried when wrote this.<loginstateresponse>, work if generic method inside current class.
in case need specify type on static method call:
.compose(rxfunctions.<loginstateresponse>applyschedulers())
Comments
Post a Comment