0

在我的应用程序中,我有一个单独的 Activity 用于启动画面。在该活动中,我使用 ExecutorService 运行繁重的后台任务,以将启动数据加载到 Application 单例类。我也在这个课程中进行账单检查,以检查用户是否购买了任何 in_app_purchases。

所以我的问题是,我想使用 android 12 启动屏幕 API。因此,通过使用该 API 以及加载启动数据的最佳方法是什么,以便我可以完全删除单独的启动屏幕活动。我可以按住启动屏幕直到数据加载。ExecutorService在哪里实现,是在主Activity上。谢谢

4

1 回答 1

0

理想情况下,在启动画面上加载大量数据并不是一个好习惯,主要是因为它对用户体验的影响。

不过,在阅读有关迁移到 Android 12 启动画面的文档之后,我想您可以实施解决方案来实现这一目标。

// Create a new event for the activity.
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Set the layout for the content view.
    setContentView(R.layout.main_activity)

    // Set up an OnPreDrawListener to the root view.
    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.isReady) {
                    // The content is ready; start drawing.
                    content.viewTreeObserver.removeOnPreDrawListener(this)
                    true
                } else {
                    // The content is not ready; suspend.
                    false
                }
            }
        }
    )
}

该解决方案基本上会延迟应用程序的第一帧,因此允许您加载所需的数据并允许用户在完成后移过启动画面。

希望这会有所帮助,如果您需要更多信息,请告诉我。

于 2021-08-24T07:24:12.130 回答