BulkDownloader is used for multiple downloading process easy. It provides progress listener for each files and for whole file. It guarantees completion of download files as it runs on work manager
2019-07-30 12:30:14.068 17130-17130/com.app.gotochef E/AndroidRuntime: FATAL EXCEPTION: main Process: com.app.gotochef, PID: 17130 java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread. at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:114) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.ExceptionInInitializerError at com.app.gotochef.views.reviews.SubmitRecipeFragment.setDraftDetails(SubmitRecipeFragment.kt:242) at com.app.gotochef.views.reviews.SubmitRecipeFragment.yourCommonResponse(SubmitRecipeFragment.kt:160) at com.app.gotochef.presenter.MainPresenter$1.onSuccess(MainPresenter.java:798) at com.app.gotochef.network.MyNetworkCalls$87.onNext(MyNetworkCalls.java:1582) at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134) at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onNext(OperatorOnErrorResumeNextViaFunction.java:154) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:224) at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference at balakrishnan.me.bulkdownloader.LocalData.<init>(LocalData.java:18) at balakrishnan.me.bulkdownloader.ImageDownloaderHelper.<clinit>(ImageDownloaderHelper.java:33) at com.app.gotochef.views.reviews.SubmitRecipeFragment.setDraftDetails(SubmitRecipeFragment.kt:242) at com.app.gotochef.views.reviews.SubmitRecipeFragment.yourCommonResponse(SubmitRecipeFragment.kt:160) at com.app.gotochef.presenter.MainPresenter$1.onSuccess(MainPresenter.java:798) at com.app.gotochef.network.MyNetworkCalls$87.onNext(MyNetworkCalls.java:1582) at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134) at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onNext(OperatorOnErrorResumeNextViaFunction.java:154) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:224) at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)