
我将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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)