当我做一个长流程时,我想要显示一个活动指示器。
我将一个模型忙标志设置为true。
然后,我调用一个返回Promise的方法-当promise调用resolve时,我在' then‘处理程序中将忙标志设置为false。
当我等待promise解析时,我希望显示活动指示器动画,但事实并非如此。
我检查并确保UI设置是正确的,并且可以正常工作。
正在做的工作是使用nativescript-日历插件-我添加了一些日历条目。
我注释掉了正在完成的工作,然后睡了一小会,然后调用resolve(),动画就开始工作了。
因此,活动指示器和Promise机制设置正确-这是这个插件正在做的事情,导致AI无法显示。
是什么导致了这样的行为?
实际上,我编辑了Promise工作代码-让它进入睡眠状态大约1秒,然后开始日历工作。我看到AI 1秒后它就死机了。
因此,看起来日历写入会导致AI冻结。
我的理解是,Promise工作是在后台完成的,不应该影响前台动画。
发布于 2017-11-14 13:22:08
我在使用SQLite时也遇到过类似的问题。
由于您没有明确声明您在工作线程中运行日历,因此我假设您将它保留在UI线程(主线程)中。
在UI线程中完成的任何大量工作都会导致明显的延迟。例如,您调用活动指示器,然后调用使线程最大化的进程,该进程完成后,活动指示器将在屏幕上绘制,但随后会在进程结束时立即隐藏起来。
解决这个问题的理想方法是将日历代码移动到worker (多线程应用程序)中,并在成功消息时关闭activity-indicator。
https://stackoverflow.com/questions/47272355
复制相似问题