java - How to create custom Subscriber? -


i want display progressdialog while observable downloading file , , when it's done want send file subscriber.

i tried make custom subscriber extends subscriber example:

public abstract class mysubscriber<t> extends subscriber {     abstract void onmessage(string message);     abstract void ondownloaded(file file); } 

and tried subscribe it: `

mysubscriber mysubscriber = new mysubscriber() {             @override             public void onmessage(string message) {                 progessdialog.setmessage(message);             }              @override             public void oncompleted() {              }              @override             public void onerror(throwable e) {              }              @override             public void onnext(object o) {              }         }; 

observable.subscribe(mysubscriber);

observable :

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 not instance of mysubscriber")                 }              } 

and answer "subscriber not instance of mysubscriber"

the reason subscriber not being of type mysubscriber because instance pass wrapped subscribe() in safesubscriber:

private static <t> subscription subscribe(subscriber<? super t> subscriber, observable<t> observable) {     ...         if(!(subscriber instanceof safesubscriber)) {             subscriber = new safesubscriber((subscriber)subscriber);         }     ...     } } 

if want keep using approach, can cast subscriber safesubscriber , call safesubscriber#getactual() on instance of mysubscriber.

in case:

observable.create(new observable.onsubscribe<void>() {     @override     public void call(subscriber<? super void> subscriber) {         subscriber yoursubscriber = ((safesubscriber) subscriber).getactual();         ((mysubscriber) yoursubscriber).onmessage("100%");         ((mysubscriber) yoursubscriber).ondownloaded(file);     } }); 

Comments

Popular posts from this blog

c++ - llvm function pass ReplaceInstWithInst malloc -

Cross-Compiling Linux Kernel for Raspberry Pi - ${CCPREFIX}gcc -v does not work -

java.lang.NoClassDefFoundError When Creating New Android Project -