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