0

我是 Android 开发新手(来自 C/C++,Win32 世界)。

我正在尝试编写一个应该处理各种回调(系统事件、计时器)的单线程服务。

我需要的是(某种)模态消息处理循环的模拟。也就是说,我希望能够调用一些等待满足某些特定条件的函数。但是,在等待期间,线程应该“在后台”处理所有事件。实际上,我们等待的条件是由其中一个回调触发的。

此外,那些“模态消息处理循环”可能是嵌套的。也就是说,在等待一个条件时,我可能需要在回调中运行另一个消息处理循环,等待另一个条件。

而且我不想要多线程。一切都应该在单线程中处理。

从我在文档中找到的最接近我需要的匹配是使用类似Handler.getLooper().loop()运行循环和Handler.getLooper().quitSafely()触发循环中断的东西。

但是文档有些混乱。目前尚不清楚是否允许递归调用此函数。此外,还不清楚是否quitSafely()可以再次使用循环之后。文档指出这quit()确实是循环器调用的最后一个函数,之后它不再可用,但是quitSafely()它指出:

在循环终止之前,将不会传递具有未来到期时间的未决延迟消息。

这是否意味着循环终止后 - 它可以再次使用?

如果没有,还有哪些其他可用选项?我可以明确控制消息循环吗?Win32中类似于GetMessage/的东西?DispatchMessage

4

0 回答 0