Android 12 启动画面设置KeepVisibleCondition
Android 12 splash screen setKeepVisibleCondition
我正在尝试使用 android 12 SplashScreen 兼容库来实现启动画面。每次我的应用程序启动时,我都想从 API 中获取一些数据。因此启动画面应该等到 API 调用完成。我在文档中找到了这个 splashScreen.setKeepVisibleCondition()
函数,但不知道如何实现 KeepScreenOnCondition
。如何让启动画面等待?任何帮助将不胜感激。
找到解决方案。
private var isLoading = true
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
splashScreen.setKeepVisibleCondition { isLoading }
}
private fun doApiCalls(){
...
isLoading = false
}
@sujith 的回答出于某种原因对我不起作用。
我在我的 viewModel 中添加了一个方法,如下所示:
fun isDataReady(): Boolean {
return isDataReady.value?:false
}
并使用
splashScreen.setKeepVisibleCondition {
!viewModel.isDataReady()
}
这对我有用。
可能有人可以向我解释为什么 sujiths 的回答对我不起作用(一段时间后它隐藏了启动画面)。因为我知道我们俩本质上都在做同样的事情。
扩展 @hushed_voice 的回答,setKeepVisibleCondition() 只要它返回 true 就会保持启动画面。一旦它等于 false,Splash 将完成,您的应用程序将继续前进。
这是我编写的一个简短函数,用于在我的 Main Activity 中处理启动画面逻辑:
private fun splashScreen() {
val splash = installSplashScreen()
splash.setKeepVisibleCondition{
viewModel.initialize()
}
}
在我的 ViewModel 中,initialize() 函数执行一些异步工作,之后它 returns false。
fun initialize(): Boolean {
return !isDataReady
}
直到那时我的闪屏出现了,之后它就消失了。您应该能够在此块中放入 API 调用,并使用 Reactive 库等待它们完成后再返回 false。这对我来说非常有效。
我正在尝试使用 android 12 SplashScreen 兼容库来实现启动画面。每次我的应用程序启动时,我都想从 API 中获取一些数据。因此启动画面应该等到 API 调用完成。我在文档中找到了这个 splashScreen.setKeepVisibleCondition()
函数,但不知道如何实现 KeepScreenOnCondition
。如何让启动画面等待?任何帮助将不胜感激。
找到解决方案。
private var isLoading = true
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen()
splashScreen.setKeepVisibleCondition { isLoading }
}
private fun doApiCalls(){
...
isLoading = false
}
@sujith 的回答出于某种原因对我不起作用。
我在我的 viewModel 中添加了一个方法,如下所示:
fun isDataReady(): Boolean {
return isDataReady.value?:false
}
并使用
splashScreen.setKeepVisibleCondition {
!viewModel.isDataReady()
}
这对我有用。 可能有人可以向我解释为什么 sujiths 的回答对我不起作用(一段时间后它隐藏了启动画面)。因为我知道我们俩本质上都在做同样的事情。
扩展 @hushed_voice 的回答,setKeepVisibleCondition() 只要它返回 true 就会保持启动画面。一旦它等于 false,Splash 将完成,您的应用程序将继续前进。
这是我编写的一个简短函数,用于在我的 Main Activity 中处理启动画面逻辑:
private fun splashScreen() {
val splash = installSplashScreen()
splash.setKeepVisibleCondition{
viewModel.initialize()
}
}
在我的 ViewModel 中,initialize() 函数执行一些异步工作,之后它 returns false。
fun initialize(): Boolean {
return !isDataReady
}
直到那时我的闪屏出现了,之后它就消失了。您应该能够在此块中放入 API 调用,并使用 Reactive 库等待它们完成后再返回 false。这对我来说非常有效。