के साथ कर सकते हैं मैं अपने AsyncTask को एंड्रॉइड में RxJava के साथ बदलना चाहता हूं। मेरे वर्तमान AsyncTask इस प्रकार है:मैं RxJava के साथ एक प्रगति पट्टी का उपयोग करना चाहता हूं जैसे आप AsyncTask
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) {
//do work
myTask();
return null;
}
@Override
protected void onPostExecute(Void void) {
super.onPostExecute();
ringProgressDialog.dismiss();
}
}
यहाँ मेरी 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;
}
मेरे गतिविधि:
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());
}
}
मैं कैसे AsyncTask में onPreExecute() विधि की नकल करते हैं, जहां मैं प्रगति को दूर करो?
doOnNext() विधि – Tuby
@Tuby का उपयोग करें आप यह कैसे करते हैं? –
इस कक्षा को देखने के लिए https://github.com/TwistedEquations/android-rxmvp-tutorial/blob/master/app/src/main/java/com/twistedeqations/rxmvp/sample/activities/home/mvp/HomePresenter.java, यह showLoading को सत्य पर सेट करने के लिए doOnNext का उपयोग करता है, जो प्रगति पट्टी को सक्षम करता है, आप इस विधि में ringProgressDialog.show() को कॉल कर सकते हैं। – Tuby