如何在 Kotlin 中的主应用程序屏幕顶部运行带有进度屏幕的服务

问题描述 投票:0回答:1

我需要在主应用程序加载时运行启动屏幕或进度条屏幕。

当主应用程序屏幕发生变化时,加载时会显示进度栏屏幕。

我环顾四周,发现 Kotlin 应用程序中不能有两个 UI 线程,所以也许我可以调用一个服务来运行并行 UI 线程。常规的启动屏幕是不够的,因为它仅在应用程序启动时使用。 还发现应用程序可以调用自己的服务,但它们似乎只是后台作业而不是顶部屏幕。

我不需要用户与启动画面/进度屏幕交互,只需要出现在顶部并在主屏幕完成加载时关闭。

您能否指导我使用具有该功能或类似功能的代码示例应用程序?

kotlin foreground-service
1个回答
0
投票

splashscreen的想法是桥接您的应用程序需要加载的时间,因此它只能工作直到应用程序加载(闪屏没有程序代码,只有一个配置,因此它可以由安卓系统)。之后的任何事情都必须由您的应用代码处理。

你是对的,只有一个 UI 线程,但你错误地认为这会带来问题。解决方案是尝试使用额外进程进行一些欺骗,解决方案是正确使用单个 UI 线程。

每当你的 UI 需要等待某些数据加载时,不要阻塞 UI 线程,直到数据可用,只需在主线程上挂起并启动一个新的协程来显示所需的进度条。当您使用 Compose 时,它可以像拥有一个 State 对象一样简单,您可以使用它来区分仍在等待数据的情况(例如Loading)和数据已加载的情况(例如Success)。然后显示

CircularProgressIndicator()
(或您想要的任何内容)表示正在加载,并显示常规屏幕表示成功

这里的关键是确保您的所有代码都是主安全,然后您可以轻松地在单个 UI 线程上同时运行多个内容。

© www.soinside.com 2019 - 2024. All rights reserved.