首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让SenchaTouch在从iOS原生插件调用时更新UI?

如何让SenchaTouch在从iOS原生插件调用时更新UI?
EN

Stack Overflow用户
提问于 2012-07-23 18:02:36
回答 1查看 526关注 0票数 0

我们有一个Phonegap/Cordova (1.6.0)应用程序,它的UI使用SenchaTouch (1),还有一个自定义本机(iOS)插件,用于解压缩Documents文件夹中的文件。该插件没有自己的GUI。

我们希望通过更新Sencha应用程序中的进度条(或简单的对话框)来显示解压缩操作过程中的进度。我们在本机插件中实现了一个更新函数,它使用"writeJavascript“方法从本机代码中调用Javascript代码。

调用该功能可以正常工作,但实际上不会显示我们在Sencha UI中所做的GUI更新,也不会显示调试日志语句。只有当我们在代码之间添加一个Javascript警告框时,我们才能观察到Sencha更新得到了处理,并且UI中发生了一些变化。感觉好像Sencha做的所有事情都是异步的,代码被以某种方式阻塞了。

我们遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-25 23:33:14

这是一个典型的长时间运行的操作阻塞UI线程的例子。我猜软件开发中的事情永远不会改变。

基本问题是,如果您从HTML应用程序调用Phonegap插件,则Phonegap应用程序的图形线程(只有一个线程)会被阻塞。解决方案很简单:尽快从你的插件返回。

对于长时间运行的操作,这意味着在单独的线程中启动它们。正如another Stackoverflow answer所演示的那样,iOS上的一个非常优雅的机制是使用中央调度中心来实现这一点。

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ });块中执行长时间运行的操作,然后使用writeJavascript将更新发送回嵌套的dispatch_async( dispatch_get_main_queue(), ^{ });块中的Phonegap UI。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11610330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档