【发布时间】:2019-02-25 21:18:21
【问题描述】:
当我启动我的应用程序时,我应该选择开始活动,具体取决于房间数据。像这样:
如果没有用户(通过登录字符串,存储在首选项中)- 显示入口 Activity。
如果有用户但他的
propertyA未设置(默认为空)- 显示活动,他将选择它的值(之后非空)。否则显示常规活动。
第一个选项很容易检查,因为我们可以立即从首选项中加载值。但是要检查propertyA,我需要通过登录来获取用户,并且 Room 强制仅在后台执行此操作,因此我们需要在这里使用异步逻辑。
我看到了解决这个问题的选项:
显示第 2 步中的 Activity(或一些临时 Activity),当用户准备好(加载)时更新为必要的。不好,因为用户会看到错误的内容。此外,为了避免不必要的更新,我们应该存储最后一个属性值 - 所以我们只有在从 null 更改为其他值时才更改为通用 Activity(这样我们就会让简单任务的代码混乱)。
房间数据库的
allowMainThreadQueries()。不好,因为打破了 Room 的总体思路。信号量(在主线程上,但期望用户加载是一项快速任务)。不好,因为代码看起来很丑,并且与第 2 步有同样的问题。
我想我的方法是完全错误的(在架构方面)。你能建议如何以更优雅的方式解决它吗?
【问题讨论】:
标签: android architecture android-room