I am using RxJava with retorifit for an api call. But when I dismiss the progress dialog after the success in the method the application crash/stopped. How to properly handle this situation.
Whats the best approach to handle this api call in such a way that It does not affect the UI.
Here is my code:
disposable.add(
apiInterface
.getWorkOrders(TbmUtils.getUserToken(TbmApp.get().getContext()),TbmUtils.getUserId(TbmApp.get().getContext()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver<HomeWorkOrderModel>() {
@Override
public void onSuccess(HomeWorkOrderModel workOrderModel) {
progressdialog.dismiss(); //Here it crash
Gson g=new Gson();
Log.v(TAG," Response: "+g.toJson(workOrderModel) );
if(workOrderModel!=null){
if(workOrderModel.getStatus()!=null){
if(workOrderModel.getStatus().equals(TbmConstants.STATUS_TRUE)){
if(workOrderModel.getResult()!=null){
venuetotal.set(workOrderModel.getResult().getTotalVenues());
workorders.set(workOrderModel.getResult().getTotalOrders());
name.set(TbmUtils.getUserName(TbmApp.get().getContext()));
if(workOrderModel.getResult().getOrders().size()!=0){
homeWorkOrderAdapter.addListing(workOrderModel.getResult().getOrders());
}
}
}else {
ShowToast(workOrderModel.getMessage());
}
}
}
}
@Override
public void onError(Throwable e) {
// HideProgress();
showError(e);
}
}
)
);
Here is the Log file:
java.lang.IllegalStateException: Fatal Exception thrown on Scheduler. 07-26 16:10:06.381 28577-28577/com.tbmsr W/System.err: at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:111) 07-26 16:10:06.381 28577-28577/com.tbmsr W/System.err: at android.os.Handler.handleCallback(Handler.java:789) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.os.Looper.loop(Looper.java:164) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6541) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at java.lang.reflect.Method.invoke(Native Method) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: Caused by: java.lang.IllegalArgumentException: View=DecorView@3d338b[] not attached to window manager 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:485) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:394) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:123) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.app.Dialog.dismissDialog(Dialog.java:371) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at android.app.Dialog.dismiss(Dialog.java:354) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at com.tbmsr.ui.home.HomeViewModel$1.onSuccess(HomeViewModel.java:106) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at com.tbmsr.ui.home.HomeViewModel$1.onSuccess(HomeViewModel.java:100) 07-26 16:10:06.382 28577-28577/com.tbmsr W/System.err: at io.reactivex.internal.operators.single.SingleObserveOn$ObserveOnSingleObserver.run(SingleObserveOn.java:81) 07-26 16:10:06.383 28577-28577/com.tbmsr W/System.err: at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)