我有一個工作線程(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