我目前正在考虑将Paging Architecture库(2.1.0-beta01编写本文时的版本)整合到我的应用程序中.一个组件是允许用户从中删除单个项目的列表.此列表仅限网络,并且使用Room缓存localy没有意义.
PagedList是不可变的,不支持修改.我已经读过有一个列表的副本,该列表被修改并返回,因为新的列表是要走的路.文档说明了相同的内容:
如果您有更精细的更新信号,例如网络API发信号通知对列表中单个项目的更新,则建议将数据从网络加载到内存中.然后通过包装内存中快照的DataSource将该数据呈现给PagedList.每次内存中副本更改时,都会使先前的DataSource无效,并且可以创建包装快照新状态的新数据.
我目前有基本推荐的实现来显示一个简单的列表.我DataSource看起来像这样:
class MyDataSource<SomeItem> : PageKeyedDataSource<Int, SomeItem>() {
override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, SomeItem>) {
// Simple load from API and notification of `callback`.
}
override fun loadAfter(params: LoadParams<Int>, callback: LoadCallback<Int, SomeItem>) {
// Simple load from API and notification of `callback`.
}
override fun loadBefore(params: LoadParams<Int>, callback: LoadCallback<Int, SomeItem>) {
// Simple load from API and notification of `callback`.
}
}
Run Code Online (Sandbox Code Playgroud)
如何在文档中引用的内存缓存(没有Room并且没有使整个数据集无效)的具体实现如何?
android kotlin android-architecture-components android-paging
我最近将我的应用程序迁移到了AndroidX,因此使用了 Jetifier 工具(目前是与 Android Gradle 插件版本捆绑的版本3.3.0-alpha10):
# gradle.properties
android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)
它工作正常,但在我的应用程序的整个构建过程中添加了许多日志(对于它转换的每个库),如下所示,并使日志难以阅读。
它看起来像这样:
> Transform room-runtime.aar (androidx.room:room-runtime:2.0.0-rc01) with AarTransform
> Transform lifecycle-extensions.aar (androidx.lifecycle:lifecycle-extensions:2.0.0-rc01) with AarTransform
> Transform work-runtime.aar (android.arch.work:work-runtime:1.0.0-alpha08) with AarTransform
Run Code Online (Sandbox Code Playgroud)
有没有办法禁用/忽略/过滤这些日志?
android build android-gradle-plugin androidx android-jetifier