首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓系统不带dispatch_main的libDispatch服务主队列

安卓系统不带dispatch_main的libDispatch服务主队列
EN

Stack Overflow用户
提问于 2013-09-20 20:15:06
回答 1查看 745关注 0票数 3

我在安卓平台上使用的是libDispatch开源软件。因此,大多数复杂的耗时任务都是通过NDK完成的(我使用的是libDispatch)。

对于一些调用,我使用dispatch_async(get_main_queue)...This就是问题所在……我可以在并发队列中运行任务,但不能在主队列中运行任务。因为这需要调用dispatch_main(),我们在这里不能这样做,因为在这种情况下,Java线程将被阻塞。那么,有没有可能在某个辅助线程上运行Java并挂接dispatch_main()来为这里的dispatch_main_queue提供服务呢?或者:我是否需要继续从JAva主UI线程通过JNI提供main_queue?

EN

回答 1

Stack Overflow用户

发布于 2014-04-27 13:13:39

查看_dispatch_main_queue_callback_4CF,它是您可以调用来排空主队列的函数。在执行队列操作后,它会像正常的敏感函数一样返回,而不是像dispatch_main那样杀死线程。

请注意,您需要定期从Java UI线程调用_dispatch_main_queue_callback_4CF,可能是每次迭代。Cocoa的官方实现使用_dispatch_queue_wakeup_main(),它使用mach消息将主线程踢出任何休眠状态,因此它可以保证回调函数被快速调用,但您必须做一些工作来启用它并构建您自己的libDispatch端口。实际上,在Android上,我认为当你的应用程序处于活动状态时,主UI线程不会进入睡眠状态,所以这应该不是问题。

https://libdispatch.macosforge.org/trac/ticket/38的libDispatch站点上有一张票,可以让_dispatch_main_queue_callback_4CF成为一个公共函数。罚单被标记为“已接受”,但没有说明是否/何时会发生这种情况。

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

https://stackoverflow.com/questions/18916567

复制
相关文章

相似问题

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