java/kotlin 模块内的 Jetpack Paging 3

Jetpack Paging 3 inside java/kotlin module

我正在开发一个具有简洁架构原则的应用程序。我有一个 domain 模块,它是一个 Java/Kotlin 模块,它没有 android 依赖项,还有一个 domainImpl 模块,它是一个 Android 模块,并且有依赖项到 localremotedomain 模块。这是 domain 模块中的 Repository 示例:

interface MovieRepository {
    fun getMovie(id: Long): Flow<Movie>
}

下面的代码是它在 domainImpl 模块中的实现:

class MovieRepositoryImpl(
    private val movieApi: MovieApi
) : MovieRepository {

    override fun getMovie(id: Long): Flow<Movie> = flow {
        emit(movieApi.getMovie(id))
    }

}

在这种情况下一切正常。但是现在我正在尝试为我的分页添加 Android Paging 3 。所以我必须向 MovieRepository 接口添加一个方法,例如:

fun getMovies(): Flow<PagingData<Movie>>

但在此之前,我必须将 Paging 库添加到我的 domain 模块,但不幸的是它是一个 Android 库,我找不到它的核心依赖项。那么我能做些什么呢?因此,我是否必须将我的 domain 模块更改为 android 模块?或者还有其他解决方法吗?

Paging 的非 android 组件在 androidx.paging:paging-common 中 - 对演示者 API 的任何依赖项都是 Android 根据定义特定的,因此与 RecyclerViewLazyColumn,等等需要 Android 具体。

然而 PagingSourcePagingDataPagerRemoteMediator 都是由 paging-common 提供的,所以你实现那些 类,包括你的转换链和 Flow<PagingData> 的整体输出可以完全 android 免费。