android-architecture-components相关内容

Android Jetpack导航如何处理工具栏和BottomNavBar内容

我对导航组件如何适应应用程序行为感到有些困惑.在教程中,您所做的事情并不会太复杂,但是在实际应用中实施时,情况似乎有所不同. 导航之前 在实施导航之前,我必须手动运行片段事务.为了做到这一点,我的片段将实现接口 onFragmentAction ,该接口将 bundle 传递给主 Activity ,并基于动作在活动中,将当前片段替换为另一个片段. 需要处理的第二部分是顶部工具栏 ..

分页库-无法停止加载项目

我正在使用Paging库直接从网络中加载日期.我是否必须实施逻辑以停止获取数据?就我而言,可能是收到的项目数少于页面大小时.目前,当我到达列表末尾时,lib会继续加载新页面. 解决方案 从理论上讲,PageKeyedDataSource具有结果回调, PageKeyedDataSource.LoadCallback 并且有一个 onResult 方法,文档说的是 如果没有更多 ..

如何同步从LiveData获得价值?

对于 LiveData ,是否有与RxJava的Observable中的 blockingNext 或 blockingSingle 类似的东西来同步获取值?如果没有,我如何实现相同的行为? 解决方案 您可以调用 getValue()返回当前值(如果有).但是,没有“阻塞直到有值"选项.通常,这是因为 LiveData 是要在主应用程序线程上使用的,因此应避免无限阻塞调用. 如果您需 ..
发布时间:2021-04-04 18:46:01 移动开发

如何使用列表大小与Room数据库返回的列表大小不同的AAC分页库

我正在尝试使用新的 Paging Library 和 Room 作为数据库,但是我遇到了一个问题,即由数据库不应该是发送到UI的相同列表,我先将一些实体 map 展示给用户,然后在此 map 操作中更改列表的大小(添加项目),显然 Paging Library 不支持这种操作,因为当我尝试运行该应用程序时,出现了以下异常: 原因:java.lang.IllegalStateException:无 ..

具有清晰架构的Android分页库

我正在尝试 Android体系结构组件中的分页库,但是我有怀疑将其集成到基于干净架构的项目中. 通常我有3个模块: 主模块(应用程序) 数据模块(具有网络和数据库依赖性的Android模块) 域模块(纯Kotlin模块) 为了引入分页,我不得不考虑将 PagedList 类作为域类.(IMO并不是一个糟糕的主意,因为最后是一个列表,并且数据源是抽象的) 因此在域 ..

PagedListAdapter.submitList()更新现有项目时表现怪异

有关此主题的小故事:该应用程序仅在确认后使用对话框更新单击的行的值.在会议室数据库上使用分页方案. 添加或删除项目时,将获取最新的数据集并将其传递到submitList方法,然后所有更改都可以看到并正常工作. 问题开始于此,如果现有项目已更新,则再次正确地获取了最新的数据集并将其传递给submitList,但是这次似乎没有变化. 当我调试 DIFF_CALLBACK 并将我的项目 ..

对ViewModel中的活动生命周期做出反应

我正在尝试创建一个使用MVVM架构的应用程序,有一件事我完全不了解. Android官方文档说,在ViewModel的引用活动上下文不是一个好主意(因为ViewModel可能会超出活动),所以当我想在恢复活动时执行某些操作时,我就开始怀疑用例了. 我知道ViewModel本身不应该执行业务逻辑,但是即使我使用某些服务类(假设GPSService必须启动并暂停每个活动,但必须在暂停时恢复 ..

Android导航库深层链接:如何综合回栈

使用 Android体系结构的导航组件,我有以下内容导航图 ->[首页]->[文章列表]->[特定文章] 我也有一个指向 [Specific Article] 的深层链接.打开后,当前导航至 [Home] . 我想合成一个后置堆栈,以便向上导航返回 [Articles List] (然后再次导航至 [Home] ). 导航的方式是什么? 解决方案 每个 NavDee ..

查看Recycler的模型查看项目

我的活动有一个Google的ViewModel,它可以获取一些模型项.然后将这些项目转换为RecyclerView的适配器项目.一个RecyclerView支持多种适配器项目. 我希望每个模型对象都有一个单独的视图模型对象,这样我才可以将更复杂的逻辑封装在该“小"视图模型中. 当前,当我有一些仅与某些适配器项有关的异步逻辑(需要在onCleared()中停止)时,我必须以某种方式通过主 ..

如何在后台线程上执行LiveData转换?

我需要将 LiveData 对象返回的一种类型的数据转换为在后台线程上的另一种形式,以防止UI滞后. 在我的特定情况下,我有: MyDBRow 对象(由原始 long s和 String s组成的POJO); a 房间 日期/时间对象) 所以我需要将我的 LiveData 转换为 LiveData> ,但 ..

具有架构组件的多模块导航

因此我在当前应用中的模块具有这种结构. 文章与此相关,因此这是我的gradle文件的方式: 功能1-详细信息 ...实施项目(“:base")实施项目(“:feature-2-detail")... 功能2-详细信息 ...实施项目(“:base")实施项目(“:feature-1-detail")... 功能3-详细信息 ...实施项目(“:base")实施项目( ..

如何以及在哪里使用Transformations.switchMap?

在Google发布的最新Android体系结构组件库中, Transformations 类中有两个静态函数.虽然 map 函数简单易懂,但我发现很难正确理解 switchMap 函数. switchMap的官方文档可以在 每次 userLiveData 的值更改时, userName 也会被更新.请注意,我们返回的是 String . 在 switchMap()函数中: M ..

在导航组件的起始目标位置时如何处理后退按钮

我已经开始使用新的导航组件,而且我真的在挖掘它!不过,我确实有一个问题-当我处于图表的起始目标位置时,应该如何处理后退按钮? 这是我现在正在使用的代码: findNavController(this,R.id.my_nav_host_fragment).navigateUp() 当我在图表上的任何地方时,它工作得很好,它使我返回,但是当我在它的开始时,由于后备箱为空,应用程序崩溃了. ..