gpt4 book ai didi

java - 选项卡切换期间的进度对话框

转载 作者:行者123 更新时间:2023-12-01 06:24:50 24 4
gpt4 key购买 nike

当用户从选项卡 A 切换到选项卡 B 时,需要很长时间(6 秒),因此我添加了一个进度对话框,让用户知道应用程序正在处理它。时间线如下:

  1. Activity B onCreate - 创建 ProgressDialog 并将长任务放入后台线程中。
  2. Activity B onStart
  3. 恢复 Activity B
  4. 屏幕上出现 Activity B

这一切都适用于一个“小”问题 - 应用程序间歇性崩溃,因为 onResume 函数引用了后台线程创建的内容。换句话说,这是一个经典的竞争条件。

为了解决竞争条件,我在 onResume 中的引用之前对线程进行了“加入”,但这使得进度对话框在后台线程完成之前不会显示(即它显示一瞬间,然后消失)并且应用程序的行为就像在后台线程正在工作时挂起一样。显然,在 onResume 完成之前进度对话框无法显示。

我的问题是:如何在不使程序崩溃的情况下显示 ProgressDialog?或者我是否需要从 onResume 中获取有问题的引用,或者继续忍受应用程序挂起的情况?

最佳答案

我最终使用了一个复杂的解决方案,其中 onResume 函数等待它需要的中间结果,但不等待整个后台线程完成。我知道这很丑陋,但它似乎有效。

我认为,更好的长期解决方案是将所需对象的创建与其创建时执行的长初始化步骤分开。时间表将是:

  1. 创建时
  2. 创建对象
  3. 创建进度对话框
  4. 创建后台线程,让它对对象进行长时间的初始化。
  5. 开始时
  6. onResume(没有检查/ sleep 循环)。

关于java - 选项卡切换期间的进度对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6156126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com