扩展开发中应用程序的功能,我需要向用户显示进度通知对话框。问题是,我做不正确。此外,我无法正确关闭此通知程序。尝试使用时钟并将变量设置为例如“ 5000ms”,然后到“ 0”,没有任何不足。
我需要实现以下功能:
一种。检查标签“ storeparsedData”是否在TinyDB中,并用获取的JSON数据填充。我已经按照我的relative question中的@Taifun建议进行了此操作。
b。如果标签不存在(空列表),请执行getWeb.gotText块以获取JSON数据(此过程可通过“ getWebData”过程完成。此功能正常,但大约需要1'35''或更长的时间,因此需要向用户展示一些东西。
C。在从网络获取JSON数据时,需要向用户显示“ ShowProgressDialog”通知程序,因此我可以应对智能手机似乎冻结的情况。
d。如果使用已获取的JSON数据填充标签“ storeparseData”,请关闭通知程序。
尝试了以下编码,但未取得成功:
有人可以帮我实现此应用程序中的此功能吗?块代码或要遵循和学习的东西会很棒。
预先感谢大家的回答。
[Edit1]
在@Taifun建议之后,有问题的功能似乎正在运行,但是存在问题。“ ShowProgressDialog”块从不触发,无论是在设备上还是在同伴上。另外,应在何处附加块“ DismissProgressDialog”以在收到JSON数据时禁用通知程序?
这是审阅的块代码,用于检查TinyDB中存储的标签。 “ ShowProgressDialog”永远不会触发。关于这个问题有什么建议吗?
这是getWeb函数获取JSON数据的代码块:
请告知您,并提供阻止代码。谢谢。
最佳答案
您的progressNotifier.AfterChoosing
事件永远不会触发,因为该事件仅在从Notifier.ShowChooseDialog
块中选择某项后才会触发,而对于Notifier.ShowMessageDialog
块则不会。因此,请使用Notifier.ShowChooseDialog
块,并将该块中的第二个按钮设置为空字符串。
正如您已经意识到的那样,您的while
循环将冻结您的应用程序...您根本不需要Clock.Timer
事件来检查数据是否存在。
就是这样:在Web.GotText
事件中接收到数据并将数据存储在TinyDB
中之后,关闭进度对话框并显示消息“数据库已准备就绪”。
更新:列表不应该在for each in list
循环中存储n次,而应该在for each in list
循环完成后仅将其存储一次。
该连接块的目的是什么?您可能要删除它...