【问题标题】:What is the way to load startup data and implement Android 12 Splash Screen together?加载启动数据和实现Android 12 Splash Screen的方法是什么?
【发布时间】:2021-10-24 09:20:50
【问题描述】:

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

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

【问题讨论】:

    标签: java android splash-screen android-12


    【解决方案1】:

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

    不过,在通过迁移到 Android 12 初始屏幕上的Documentation 之后,我想您可以实施this 解决方案来实现这一目标。

    // 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
                    }
                }
            }
        )
    }
    

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

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

    【讨论】:

    • 你能解释一下对用户体验的影响吗?据我了解,如果已经存在启动画面,则预先加载大数据是一种很好的做法。无论是否加载,启动画面都是相同的,而用户无需在之后(或在启动画面之前)额外等待即可使用该应用程序。
    • 延迟应用程序的使用,如果有大量数据要获取,你应该异步/在后台进行,这样它就不会延迟用户使用应用程序.如果特定功能依赖于数据,请检查数据是否已加载,并相应地重定向。闪屏主要是加载/初始化你的对象和加载少量数据/设置配置,这样一旦用户通过那个屏幕,体验就会很流畅。
    猜你喜欢
    • 2020-12-04
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2010-09-25
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多