我有一个工作线程(pthread)在后台处理一些事情,然后我想在屏幕上显示结果。所以我必须在 UI 线程或主线程上执行一些代码。
iOS 可以用dispatch_async(dispatch_get_main_queue(), ^{ /* My code */ });
,Android 可以用View.queueEvent()
。任何人都可以告诉我如何使用 BB 10 原生 SDK 做同样的事情吗?
谢谢,
解决方案已更新。
终于想通了2个方法,第一个很简单,但是没用,不知道为什么。如果有人想看,我把它放在这里。
方法一。
用于bps_channel_exec
在拥有通道的线程上执行一些代码。在 UI 线程上,创建一个通道,然后将其设置为活动的。在工作线程上,通过调用 获取活动通道bps_channel_get_active
,然后使用bps_channel_exec
. 但它对我不起作用,继续寻找原因。
方法2。
这种方法比较复杂,但思路很简单。在工作线程上,将事件推送到 UI 线程。在 UI 线程主循环上,添加一个事件处理程序来处理该类事件。
在工作线程上:通过调用注册域bps_register_domain
,然后通过调用使用域创建事件bps_event_create
。接下来,通过调用将事件推送到 UI 线程上的活动通道bps_channel_push_event
。
在 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
}
}
...
}
这里有一个很好的样本 。