Ton*_*Joe 5 android delay kotlin rx-java2
我正在尝试从我的应用程序中的网络服务器加载一些数据。并且由于操作的异步性质,无法提前知道需要多长时间才能完成。为了提醒用户操作\xe2\x80\x9cin 正在进行。\xe2\x80\x9d,我正在使用加载指示器。
\n\n这是使用 kotlin 和 RxJava 2 提出的(我希望它很清楚):
\n\nfun loadData(){\n\n showLoader() // show loading indicator\n\n Single.fromCallable {\n\n // http request logic goes here\n\n }.delay(1000, TimeUnit.MILLISECONDS)\n .subscribeOn(Schedulers.io())\n .observeOn(AndroidSchedulers.mainThread())\n .subscribeWith(object : DisposableSingleObserver<String>() {\n\n override fun onSuccess(data: String) {\n // do something\n hideLoader() // on success, hide indicator\n }\n\n override fun onError(e: Throwable) {\n displayErrorMessage()\n hideLoader() // on error hide indicator\n }\n\n })\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我想显示加载指示器至少 1 秒,所以我使用了操作delay()符,但问题是如果操作成功,它会按预期工作,但如果出现错误,指示器将立即消失,而不是在 1 秒后消失。
那么有没有办法让onError()方法在1秒后执行呢?谢谢
由于您的工作是在后台线程中完成的,因此您可以将其休眠而无需冻结用户界面:
SystemClock.sleep(1000)
Run Code Online (Sandbox Code Playgroud)
hideLoader()只需将其放在通话之前即可
| 归档时间: |
|
| 查看次数: |
2469 次 |
| 最近记录: |