2012-04-04 92 views
0

我有以下结构:为什么我的DialogFragment中的ProgressBar停止旋转?

在UIActivity1:

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

DialogFragment被创建和进度在这个片段开始旋转

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

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

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

它们不应该是独立的吗?

ps当我在不同的任务中在UIActivity之外运行繁重的工作时,进度条仍然没有问题地旋转。

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

谢谢!

回答

0

从你共享的信息中不清楚,但看起来你正在做你的UI线程中的所有繁重的执行。这是活动的主线。无论您使用片段分离的活动是否只是为了完成这项工作,都是无关紧要的,必须使用UI线程只有才能更新UI元素,并且通常要避免花费超过100-200毫秒的任务。这是根据android Non-Responsive Application documentation。这可能是问题,任何长期执行或长时间执行的任务都必须在后台线程中完成。请致电example of using the progressbar in Android

+0

哦,当然你是对的。我一直在假设,只要DialogFragment在前台,我就可以“滥用”UIActivity来做一些繁重的工作,因为它不需要进行任何屏幕更新。好吧,就像它看起来一样,即使UIActivity不在前台,并且没有进行任何UI工作,所有其他可见活动(如片段)也不会更新。感谢您指出这一点! – user387184 2012-04-05 05:55:07