【问题标题】:Which scheduler should I use to decode a bitmap我应该使用哪个调度程序来解码位图
【发布时间】:2018-01-23 09:40:49
【问题描述】:

我注意到在我的应用程序中加载位图需要很长时间,如果在主线程上运行会导致动画滞后,因此我将其移至后台线程。

val scheduler = ...
Observable.fromCallable {
    BitmapFactory.decodeResource(resources, resourceId)
}.subscribeOn(scheduler)
        .observeOn(AndroidSchedulers.mainThread()).subscribe {bitmap ->
    imageView.setImageBitmap(bitmap)
}

但是,有多个调度程序可供选择。一方面位图是从磁盘加载的,所以它应该是Schedulers.io(),但另一方面它也是计算密集型的,所以Schedulers.computation() 是另一个候选者。位图大小约为 1 兆像素,加载时间约为 50 毫秒。

那么我该如何决定,为此任务选择哪个调度程序?

【问题讨论】:

    标签: android multithreading kotlin rx-android bitmapfactory


    【解决方案1】:

    我会说Schedulers.io(),因为加载资源是一个阻塞操作,而在Schedulers 中它声明对于Schedulers.computation()

    如果 RxJavaPlugins.setFailOnNonBlockingScheduler(boolean) 设置为 true,则尝试执行在此调度程序上运行时阻塞的运算符将引发 IllegalStateException。"

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多