根据房间选择活动



当我启动应用程序时,我应该根据房间数据选择"启动活动"。这样:

  1. 如果没有用户(通过登录字符串,存储在首选项中) - 显示入口活动。

  2. 如果有用户,但没有设置他的propertyA(默认为null) - 显示活动他将选择其值(之后非null)。

  3. 否则显示一般活动。

可以轻松检查第一个选项,因为我们可以立即从首选项中加载值。但是要检查 propertyA,我需要通过登录和房间部队才能在后台进行用户,因此我们需要在此处进行异步逻辑。

我看到的解决此问题的选项:

  1. 显示步骤2(或某些临时活动)的活动,在用户准备就绪时更新到必需(加载)。不好,因为用户会看到错误的内容。此外,为了避免不必要的更新,我们应该存储最后的属性值 - 因此,我们仅在从null更改为其他内容时才更改为一般活动(这样,我们将代码弄乱而简单任务)。

  2. 房间数据库的allowMainThreadQueries()。不好,因为Break Room的总体想法。

  3. 信号量(在主线程上,但是对于期望,用户加载是一项快速任务)。不好,因为在代码上看起来很丑陋,并且存在与步骤2相同的问题。

我想我的方法是完全错误的(以建筑方式)。您能建议如何以更优雅的方式解决它?

老实说,有了您的问题,我不会选择您列出的三个选项中的任何一个。

由于您的应用程序依赖于获取数据,然后才知道向用户显示什么内容,为什么不使用启动屏幕?

启动屏幕已添加到材料设计中,如果您想进行一些初始启动处理,而又不牺牲美学或显示不准确数据的风险,这是一个不错的选择。

这是启动屏幕的链接:https://material.io/design/communication/launch-screen.html

即使您不使用占位符UI或品牌启动屏幕,如果设置了propertyA,请向用户显示一个简短的动画,这仍然是令人愉快的。

最新更新