我的函数onClickButton(伪代码):
show activityIndicatorView (or ProgressBar or change label text no matter)
execute my algorithm
hide activityIndicatorView
actvitiyIndicatorView永远不会显示。如果我在函数末尾删除了hide,那么它将在算法后出现。尽管我在执行算法之前显示它。
为什么以及如何解决它?
答案 0 :(得分:2)
最有可能你执行我的算法是一个耗时很长的cpu耗时过程,在主线程上调用...
你也在算法之前显示活动指示器......用户界面通常需要一些时间来更新布局(添加你的活动指示器..)..但在它之前...你的一个; gorith发生在主线程..它阻止了UI更新..所以当任务完成时...你告诉隐藏活动......你的活动隐藏....这就是为什么你看不到它被添加然后从视图..
解决这个问题..算法任务在一个单独的线程中(没有主线程) ..这样UI将被更新,任务将在后台完成..
替代方法是在延迟一段时间后执行长任务。因此UI更新自身