我是 Android 开发新手(来自 C/C++,Win32 世界)。
我正在尝试编写一个应该处理各种回调(系统事件、计时器)的单线程服务。
我需要的是(某种)模态消息处理循环的模拟。也就是说,我希望能够调用一些等待满足某些特定条件的函数。但是,在等待期间,线程应该“在后台”处理所有事件。实际上,我们等待的条件是由其中一个回调触发的。
此外,那些“模态消息处理循环”可能是嵌套的。也就是说,在等待一个条件时,我可能需要在回调中运行另一个消息处理循环,等待另一个条件。
而且我不想要多线程。一切都应该在单线程中处理。
从我在文档中找到的最接近我需要的匹配是使用类似Handler.getLooper().loop()
运行循环和Handler.getLooper().quitSafely()
触发循环中断的东西。
但是文档有些混乱。目前尚不清楚是否允许递归调用此函数。此外,还不清楚是否quitSafely()
可以再次使用循环之后。文档指出这quit()
确实是循环器调用的最后一个函数,之后它不再可用,但是quitSafely()
它指出:
在循环终止之前,将不会传递具有未来到期时间的未决延迟消息。
这是否意味着循环终止后 - 它可以再次使用?
如果没有,还有哪些其他可用选项?我可以明确控制消息循环吗?Win32中类似于GetMessage
/的东西?DispatchMessage