我需要在主应用程序加载时运行启动屏幕或进度条屏幕。
当主应用程序屏幕发生变化时,加载时会显示进度栏屏幕。
我环顾四周,发现 Kotlin 应用程序中不能有两个 UI 线程,所以也许我可以调用一个服务来运行并行 UI 线程。常规的启动屏幕是不够的,因为它仅在应用程序启动时使用。 还发现应用程序可以调用自己的服务,但它们似乎只是后台作业而不是顶部屏幕。
我不需要用户与启动画面/进度屏幕交互,只需要出现在顶部并在主屏幕完成加载时关闭。
您能否指导我使用具有该功能或类似功能的代码示例应用程序?
splashscreen的想法是桥接您的应用程序需要加载的时间,因此它只能工作直到应用程序加载(闪屏没有程序代码,只有一个配置,因此它可以由安卓系统)。之后的任何事情都必须由您的应用代码处理。
你是对的,只有一个 UI 线程,但你错误地认为这会带来问题。解决方案是不尝试使用额外进程进行一些欺骗,解决方案是正确使用单个 UI 线程。
每当你的 UI 需要等待某些数据加载时,不要阻塞 UI 线程,直到数据可用,只需在主线程上挂起并启动一个新的协程来显示所需的进度条。当您使用 Compose 时,它可以像拥有一个 State 对象一样简单,您可以使用它来区分仍在等待数据的情况(例如Loading)和数据已加载的情况(例如Success)。然后显示
CircularProgressIndicator()
(或您想要的任何内容)表示正在加载,并显示常规屏幕表示成功。
这里的关键是确保您的所有代码都是主安全,然后您可以轻松地在单个 UI 线程上同时运行多个内容。