应用初始化挑战-条件导航和房间对象初始化

时间:2020-10-28 14:16:39

标签: android android-room android-navigation

我正在努力初始化应用程序。在显示理想的开始屏幕之前,我需要检查两件事(案例和帐户)。要运行该应用程序,必须至少有一个。因此,如果两者都不存在,则需要创建或找到/连接它们(例如登录名)。每个程序都将在屏幕上执行此操作,并且这些流需要从其他屏幕(例如从设置)访问,因为应用程序中可能有多个。我想:

  • 检查默认帐户,如果没有,请检查任何一个 帐户(如果没有)导航到创建/链接帐户 片段。
  • 检查默认情况,如果没有,检查任何情况,如果 没有一个导航到create / link Case片段。
  • 显示开始屏幕。

每一项“检查”都需要从Room数据库中获取对象。

我本来打算使用conditional navigation,因为这似乎是必需的,但是该示例非常简单。首先,事件是在我的流程需要检查数据库时按下按钮。这部分对我来说使事情变得复杂,因为检查数据库是异步过程,而初始化应用程序则不是。在检查完成之前,我无法显示主屏幕。在主线程上执行这些检查似乎不是正确的方法。上有many posts

由于我无法在没有设置两个对象的情况下显示主屏幕,而且我不应该在主线程上运行查询,因此我找到了对初始屏幕的引用。似乎也有一些controversy around it

我尝试了使用执行程序运行查询的这种方法:

Executor executor = Executors.newSingleThreadExecutor();

...然后初始化过程完成,请导航至主屏幕,但我遇到了错误:

FATAL EXCEPTION: pool-1-thread-1
android.util.AndroidRuntimeException: Animators may only be run on Looper threads

This是类似的情况,但是

我确定之前已经做过。其他人如何处理1)应用启动时的条件导航2)初始化过程中的异步数据库调用。

0 个答案:

没有答案