I want to replace my AsyncTask with RxJava in android. My current AsyncTask is as follows:
public class ProgressBarAsyncTask extends AsyncTask<Void,Void,Void> { @Override protected void onPreExecute() { super.onPreExecute(); ringProgressDialog = ProgressDialog.show(context,"MyProgressBarTitle","Working please wait",true, false); } @Override protected Void doInBackground(Void... void) {
Here is my replacement for RxJava:
public static Observable<Void> getObservable(final Context context,final String... params) { return Observable.defer(new Func0<Observable<Void>>() { @Override public Observable<Void> call() { return Observable.just(myTask()); } }); } public static Subscriber<Void> getSubscriber() { Subscriber<Void> subscriber = new Subscriber<Void>() { @Override public void onCompleted() { ringProgressDialog.dismiss(); } @Override public void onError(Throwable e) { Log.d(TAG,e.toString()); } @Override public void onNext(Void aVoid) { manipulateData(); } }; return subscriber; }
Activity:
public class MainActivity extends Activity { private ProgressDialog ringProgressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GetNumberObservable.Observable() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread())) .subscribe(getSubscriber()); } }
How do I imitate the onPreExecute () method in AsyncTask where I run progressDialog?
source share