- 我们可以选择退出 SplashScreen 吗?
看起来我们无法选择退出,因为 Android 团队正在尝试统一应用加载体验:https ://9to5google.com/2021/04/21/android-12-dp3-all-apps-now-show-the -加载画廊时相同的启动画面/
- 如何使用它?
如果您不执行任何操作,那么它将使用windowBackground
主题和您的启动器图标并在您的应用程序绘制其第一帧时立即关闭。
您可以修改许多属性,例如背景、图标等:https ://developer.android.com/about/versions/12/features/splash-screen#set-theme
- 如果我想让飞溅停留更长时间怎么办?就像获取本地数据库一样。
如果准备好继续进行,您可以使用ViewTreeObserver.OnPreDrawListener
并从您的退货中拨打阻止电话。viewmodel
活动:
// My Launcher Activity
class MainActivity : AppCompatActivity() {
private val viewModel : JustDelayViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val content: View = findViewById(android.R.id.content)
content.viewTreeObserver.addOnPreDrawListener(
object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
// Check if the initial data is ready.
return if (viewModel.getIsReady()) {
// The content is ready; start drawing.
content.viewTreeObserver.removeOnPreDrawListener(this)
true
} else {
// The content is not ready; suspend.
false
}
}
}
)
}
}
视图模型:
class JustDelayViewModel : ViewModel() {
fun getIsReady(): Boolean {
val result = viewModelScope.runCatching {
runBlocking {
//do some blocking call check for Firebase result or something
delay(5000)
}
true //return the result
}
return result.isSuccess
}
}
您可以阅读更多相关信息:https ://developer.android.com/about/versions/12/features/splash-screen#suspend-drawing