Remove newThread usages, it probably fixes random crashes

This commit is contained in:
len 2016-07-08 18:23:03 +02:00
parent f15df40a54
commit 5f1a89df63
4 changed files with 8 additions and 7 deletions

View File

@ -273,7 +273,7 @@ class DownloadManager(
page page
} }
// Retry 3 times, waiting 2, 4 and 8 seconds between attempts. // Retry 3 times, waiting 2, 4 and 8 seconds between attempts.
.retryWhen(RetryWithDelay(3, { (2 shl it - 1) * 1000 })) .retryWhen(RetryWithDelay(3, { (2 shl it - 1) * 1000 }, Schedulers.trampoline()))
} }
// Public method to get the image from the filesystem. It does NOT provide any way to download the image // Public method to get the image from the filesystem. It does NOT provide any way to download the image

View File

@ -14,7 +14,6 @@ import nucleus.factory.RequiresPresenter
import rx.Observable import rx.Observable
import rx.Subscription import rx.Subscription
import rx.android.schedulers.AndroidSchedulers import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import rx.subscriptions.CompositeSubscription import rx.subscriptions.CompositeSubscription
import java.util.* import java.util.*
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@ -179,7 +178,7 @@ class DownloadFragment : BaseRxFragment<DownloadPresenter>() {
* @param download the download to observe its progress. * @param download the download to observe its progress.
*/ */
private fun observeProgress(download: Download) { private fun observeProgress(download: Download) {
val subscription = Observable.interval(50, TimeUnit.MILLISECONDS, Schedulers.newThread()) val subscription = Observable.interval(50, TimeUnit.MILLISECONDS)
// Get the sum of percentages for all the pages. // Get the sum of percentages for all the pages.
.flatMap { .flatMap {
Observable.from(download.pages) Observable.from(download.pages)

View File

@ -21,7 +21,6 @@ import kotlinx.android.synthetic.main.item_pager_reader.*
import rx.Observable import rx.Observable
import rx.Subscription import rx.Subscription
import rx.android.schedulers.AndroidSchedulers import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import rx.subjects.PublishSubject import rx.subjects.PublishSubject
import rx.subjects.SerializedSubject import rx.subjects.SerializedSubject
import java.io.File import java.io.File
@ -168,7 +167,7 @@ class PagerReaderFragment : BaseFragment() {
val currentValue = AtomicInteger(-1) val currentValue = AtomicInteger(-1)
progressSubscription?.unsubscribe() progressSubscription?.unsubscribe()
progressSubscription = Observable.interval(100, TimeUnit.MILLISECONDS, Schedulers.newThread()) progressSubscription = Observable.interval(100, TimeUnit.MILLISECONDS)
.onBackpressureLatest() .onBackpressureLatest()
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe { .subscribe {

View File

@ -1,12 +1,15 @@
package eu.kanade.tachiyomi.util package eu.kanade.tachiyomi.util
import rx.Observable import rx.Observable
import rx.Scheduler
import rx.functions.Func1 import rx.functions.Func1
import rx.schedulers.Schedulers
import java.util.concurrent.TimeUnit.MILLISECONDS import java.util.concurrent.TimeUnit.MILLISECONDS
class RetryWithDelay( class RetryWithDelay(
private val maxRetries: Int = 1, private val maxRetries: Int = 1,
private val retryStrategy: (Int) -> Int = { 1000 } private val retryStrategy: (Int) -> Int = { 1000 },
private val scheduler: Scheduler = Schedulers.computation()
) : Func1<Observable<out Throwable>, Observable<*>> { ) : Func1<Observable<out Throwable>, Observable<*>> {
private var retryCount = 0 private var retryCount = 0
@ -14,7 +17,7 @@ class RetryWithDelay(
override fun call(attempts: Observable<out Throwable>) = attempts.flatMap { error -> override fun call(attempts: Observable<out Throwable>) = attempts.flatMap { error ->
val count = ++retryCount val count = ++retryCount
if (count <= maxRetries) { if (count <= maxRetries) {
Observable.timer(retryStrategy(count).toLong(), MILLISECONDS) Observable.timer(retryStrategy(count).toLong(), MILLISECONDS, scheduler)
} else { } else {
Observable.error(error as Throwable) Observable.error(error as Throwable)
} }