【发布时间】:2021-12-13 11:09:08
【问题描述】:
当我打开我的应用时,启动 Activity 在某些设备上崩溃,并且它立即在我的设备上消失。 这是我的launchActivity代码:
CoroutineScope(Dispatchers.Main).launch {
withContext(Dispatchers.IO) {
dataStore.data.map { preferences ->
preferences[DataStoreManager.NOT_FIRST_LUNCH] ?: false
}.collect { notFirstLaunch ->
if (!notFirstLaunch) {
editBoolean(DataStoreManager.NOT_FIRST_LUNCH, true)
withContext(Dispatchers.Main) {
activityFullscreenCompat()
setContentView(R.layout.activity_lunch)
prepareIntro()
lunch_btn_skip.setOnClickListener { //todo gotoSplash()
gotoMain()
}
}
} else {
withContext(Dispatchers.IO) {
dataStore.data.map { preferences ->
preferences[DataStoreManager.IS_NIGHT] ?: false
}.collect { isNight ->
withContext(Dispatchers.Main) {
if (isNight)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
else
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
//todo gotoSplash()
gotoMain()
}
}
}
}
}
}
}
【问题讨论】:
-
请贴出错误日志
-
应用程序崩溃后,Logcat窗口会出现错误描述,请在此处粘贴。
-
顺便说一句,您不需要执行所有调度程序切换。你没有调用任何阻塞代码。在这段代码中根本不需要提及任何调度程序。然后它将对所有内容使用默认的 Main 以确保安全。
-
你确定吗?我正在使用 Jetpack 数据存储!您是说最好删除此代码?
withContext(Dispatchers.IO) {? @tenfour04 -
正如我所说的“它会立即在我的设备上消失”并且没有崩溃,但有人对我说它在我第一次打开应用程序时崩溃(就像 launchActivity 的逻辑)@RickyMo
标签: android kotlin kotlin-coroutines