Java 如何创建自定义订阅服务器?

Java 如何创建自定义订阅服务器?,java,android,rx-java,rx-android,Java,Android,Rx Java,Rx Android,我想在下载文件时显示progressDialog,observable并在下载完成后将文件发送给订阅者 我试图通过扩展自订阅者来创建自定义订阅者,例如: public abstract class MySubscriber<T> extends Subscriber { abstract void onMessage(String message); abstract void onDownloaded(File file); } observable.subscr

我想在下载文件时显示
progressDialog
observable
并在下载完成后将文件发送给订阅者

我试图通过扩展自
订阅者
来创建自定义订阅者,例如:

public abstract class MySubscriber<T> extends Subscriber {
    abstract void onMessage(String message);
    abstract void onDownloaded(File file);
}
observable.subscribe(mySubscriber)

可观察到的是:

observable  = Observable.create(new Observable.OnSubscribe<Void>() {
            @Override
            public void call(Subscriber<Void> subscriber) {
                 //file downloading code...
                if (subscriber instanceof MySubscriber){
                ((MySubscriber) subscriber).onMessage("100%");
                ((MySubscriber) subscriber).onDownloaded(file);
               }else{
                   Log.e(TAG,"subscriber is not instance of MySubscriber")
                }
             }
observable=observable.create(newobservable.OnSubscribe()){
@凌驾
公用无效呼叫(用户){
//文件下载代码。。。
if(MySubscriber的订户实例){
((MySubscriber)订阅者)。onMessage(“100%”);
((MySubscriber)订户).onDownloaded(文件);
}否则{
Log.e(标记“订阅者不是MySubscriber的实例”)
}
}

答案是“订阅者不是MySubscriber的实例”

订阅者之所以不是类型
MySubscriber
是因为您传递的实例最终被
subscribe()
包装在:


private static Subscription subscribe(Subscriber)我正在使用以下版本,compile'io.reactivex:rxandroid:1.2.1'compile'io.reactivex:rxjava:1.1.6'我正在获取ClassCastException操作Subscriber无法强制转换为LoginSubscriber。公共静态抽象类LoginSubscriber扩展订阅服务器{abstract void onUserNameInvalid(字符串消息);}上面的解决方案对我不起作用。我试图用我的自定义方法实现下面的@Androidx的任何解决方案嘿@NickUnuchek可以在这方面帮助我。@AbhijitKurane抱歉,我没有使用上面的答案。我认为它对你起作用,因为你已经接受了Androidx的答案。谢谢你的及时回复,Nick
observable  = Observable.create(new Observable.OnSubscribe<Void>() {
            @Override
            public void call(Subscriber<Void> subscriber) {
                 //file downloading code...
                if (subscriber instanceof MySubscriber){
                ((MySubscriber) subscriber).onMessage("100%");
                ((MySubscriber) subscriber).onDownloaded(file);
               }else{
                   Log.e(TAG,"subscriber is not instance of MySubscriber")
                }
             }