【问题标题】:why does the ProgressBar in my DialogFragment stop spinning?为什么我的 DialogFragment 中的 ProgressBar 停止旋转?
【发布时间】:2012-04-04 22:33:27
【问题描述】:

我有以下结构:

在 UIActivity1 中:

MyMyProgressDialogFragment progressDialog = MyMyProgressDialogFragment.newInstance();
progressDialog.show(getFragmentManager(),"dialog");
getFragmentManager().executePendingTransactions();
..do some heavy work and send messages to progressDialog

DialogFragment 被创建,并且该片段中的 ProgressBar 开始旋转

但是当我现在开始在创建对话框片段的活动中进行繁重的工作时,片段中的进度条会停止。

阅读片段文档时,我了解到片段有自己的活动 - 与 Ui Activity1 相同。而且 afaik 每个活动都在单独的线程中运行。

那么为什么当 UIActivity1 开始繁重的工作时,对话框片段中的进度条会停止呢?

他们不应该独立吗?

ps 当我在 UIActivity 之外再次在不同的任务中运行繁重的工作时,进度条一直在旋转而没有问题。

我在这里理解的错误在哪里?

谢谢!

【问题讨论】:

    标签: android android-dialogfragment


    【解决方案1】:

    从您共享的信息中并不清楚,但看起来您正在 UI 线程中执行所有繁重的操作。那是活动的主线程。您使用 Fragment 衍生的 Activity 是否只是为了完成这项工作无关紧要,UI 线程必须用于更新 UI 元素,并且通常避免耗时超过 100 - 200 的任务小姐。这是根据 android Non-Responsive Application documentation。这可能是问题所在,任何长期存在或长期执行的任务都必须在后台线程中完成。

    看看这个example of using the progressbar in Android

    【讨论】:

    • 哦,你当然是对的。我的假设是,只要 DialogFragment 在前台,我就可以“滥用” UIActivity 来做一些繁重的工作,因为它不需要进行任何屏幕更新。好吧,看起来,即使 UIActivity 不在前台并且没有真正做任何 UI 工作,所有其他可见活动(如片段)也不会更新。感谢您指出这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2012-03-27
    • 1970-01-01
    相关资源
    最近更新 更多