Android:存储库模式和分页

Android:存储库模式和分页,android,kotlin,rx-java2,Android,Kotlin,Rx Java2,最近,我读到在设计应用程序的后端(存储库,而不是服务器端后端)时,拥有单一真实来源(SSOT)是多么重要 通过开发一个新闻提要应用程序(使用awesome),我试图了解更多关于应用程序架构的信息。但是,我不确定如何实现分页。顺便说一下,我正在使用MVVM作为表示层。视图订阅ViewModel的LiveData。ViewModel订阅RxJava流 我提出了以下方法: interface NewsFeedRepository { fun getNewsFeed(): Observa

最近,我读到在设计应用程序的后端(存储库,而不是服务器端后端)时,拥有单一真实来源(SSOT)是多么重要

通过开发一个新闻提要应用程序(使用awesome),我试图了解更多关于应用程序架构的信息。但是,我不确定如何实现分页。顺便说一下,我正在使用MVVM作为表示层。视图订阅ViewModel的LiveData。ViewModel订阅RxJava流

我提出了以下方法:

interface NewsFeedRepository {
        fun getNewsFeed(): Observable<List<Article>>
        fun refreshFeed(): Completable
        fun loadMore(): Completable
}
此存储库用于搜索文章。方法
moreArticles()
根据上次调用
searchArticles(…)
尝试从API加载更多文章。例如:ViewModel调用
repo.searchArticles(q=“比特币”)
。调用
repo.moreArticles()
尝试从API加载更多包含查询字符串
“比特币”
的文章,并与本地数据库同步

我的问题是:

1.是否可以在存储库中存储关于上一个请求的信息(
searchArticles(request)
?我也可以考虑在
moreArticles()
中传递请求参数,例如
moreArticles(来源:List?=null,查询:String?=null)
。这样,存储库就不必存储上次请求的信息


2.再次,在
moreArticles()中返回一个
Completable
可能看起来很奇怪。这可以吗,或者有更好的方法吗?

使用支持lib@pskink但是我想将业务逻辑与视图分开。我已经阅读了一篇关于分页库的教程,但我看不到如何将后端与视图完全分开。分页库如何与MVI(单向数据流)一起工作?参见
PagedListAdapter
LivePagedListBuilder
@Elias您有没有想出一个好的解决方案?
interface SearchArticleRepository {
    fun searchArticles(sources: List<NewsSource>? = null, query: String? = null): Flowable<List<Article>>
    fun moreArticles(): Completable  
}