android-避免使用RxJava的Thread.sleep

android-避免使用RxJava的Thread.sleep,第1张

概述我将observable应用于此方法,但是在调用此方法后,它表示主线程上的工作过多.任何帮助表示赞赏funisBatteryHealthGood():Observable<Boolean>{varcount=0intent=context.registerReceiver(broadCastReceiver,IntentFilter(Intent.ACTION_BATTERY_CHAN

我将observable应用于此方法,但是在调用此方法后,它表示主线程上的工作过多.任何帮助表示赞赏

fun isBatteryHealthGood(): Observable<Boolean> {        var count = 0        intent = context.registerReceiver(broadCastReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED))    while (batteryStatus == null && count < maxCount) {        Thread.sleep(1000)        count++    }    return Observable.just(batteryStatus == BatteryManager.BATTERY_HEALTH_GOOD)}

解决方法:

我的解决方案是通过使用interval operator避免使用Thread.sleep()
我认为您可以在isBatteryHealthGood()中忽略可观察的内容.

像这样返回布尔值:

//a simple function works here, no needfun isBatteryHealthGood(): Boolean {    return batteryStatus == BatteryManager.BATTERY_HEALTH_GOOD}

最后像这样订阅:

Observable.            interval(1000, TimeUnit.MILliSECONDS)            take(maxCount) //place max count here            .map { _ -> isBatteryHealthGood() }            .subscribeOn(Schedulers.io())            .observeOn(AndroIDSchedulers.maintThread())            .subscribe {                batterystat ->                //do what you need            }

PS:您应该只注册一次接收器

intent = context.registerReceiver(broadCastReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
总结

以上是内存溢出为你收集整理的android-避免使用RxJava的Thread.sleep全部内容,希望文章能够帮你解决android-避免使用RxJava的Thread.sleep所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1092159.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存