无法重试方法工作时(Kotlin,Rx)

时间:2018-11-05 15:23:39

标签: android kotlin rx-java2

我调用了retryNextTweet.onNext()方法,但是它没有进行可观察的重试。 我的目标是从本地存储中获取下一个项目。如果sqlite中没有记录,那么我将使用apiService填充本地存储并重试。

private val retryNextTweet: PublishSubject<Any> = PublishSubject.create()

override fun getNextTweet(cacheId: Long, tweetSearchParams: TweetSearchParams): Observable<Tweet> {
    return tweetDao.getNextTweet(cacheId)
            .toObservable()
            .retryWhen {
                it.flatMap { loadTweetsFromApi(tweetSearchParams).subscribe({
                    if(it.isNotEmpty())
                        retryNextTweet.onNext(Any())
                }, {})
                    retryNextTweet }
            }
}

@Dao
interface TweetDao {
    @Query("SELECT * FROM tweet WHERE cacheId > :cacheId LIMIT 1")
    fun getNextTweet(cacheId: Long): Single<Tweet>
}

1 个答案:

答案 0 :(得分:0)

我只是用BehaviorSubject替换了PublishSubject,并且它起作用了。谢谢akarnokd https://stackoverflow.com/users/61158/akarnokd