我有一个工作线程(pthread)来处理背景上的一些事情,然后我想在屏幕上显示结果。所以我必须在UI线程或主线程上执行一些代码。如何在UI线程上执行一些代码
在iOS中,我可以使用dispatch_async(dispatch_get_main_queue(), ^{ /* My code */ });
,在Android中我可以使用View.queueEvent()
。任何人都可以告诉我如何与BB 10原生SDK相同的东西?
感谢,
解决方案更新。
我终于弄清楚了2种方法,第一种方法很简单,但它不起作用,我不知道为什么。如果有人想看,我把它放在这里。
方法1.
使用bps_channel_exec
拥有该通道的线程上执行一些代码。在UI线程上创建一个通道,然后将其设置为活动状态。在工作线程上,通过调用bps_channel_get_active
来获得活动通道,然后使用bps_channel_exec
。但它不适合我,继续找到原因。
方法2:
这种方法比较复杂,但想法很简单。在工作线程上,将事件推送到UI线程。在UI线程主循环中,添加一个事件处理程序来处理事件类型。
在工作线程上:通过调用bps_register_domain
来注册域,然后通过调用bps_event_create
来使用域创建一个事件。接下来,通过调用bps_channel_push_event
将事件推送到UI线程上的活动通道。
在UI线程主循环:
for (;;) {
bps_event_t *event = NULL;
bps_get_event(&event, -1);
if (event) {
if (bps_event_get_domain(event) == the_domain_that_is_mentioned_above) {
// Handle the event
}
}
...
}
有一个很好的样本 here。
我不使用级联,所以我不能用QT相关的API。最后,我得到了它的工作,解决方案更新。 – TienDC 2013-05-16 09:47:13
你对你的UI有什么用处? – Jean 2013-05-16 13:46:30