有没有"休息" android.os.Looper的方法?

时间:2015-02-28 06:47:37

标签: android android-looper

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

我试图编写一个应该处理各种回调(系统事件,定时器)的单线程服务。

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

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

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

根据我在文档中发现的最接近我需要的是使用Handler.getLooper().loop()来运行循环,Handler.getLooper().quitSafely()来触发循环中断。

然而,文档有些令人困惑。目前还不清楚它是否允许递归调用此函数。此外,还不清楚在quitSafely()之后是否可以再次使用该循环。文档指出quit()确实是为looper调用的最后一个函数,之后它不再可用,但是对于quitSafely(),它声明:

  

未来到期的延迟消息将在循环终止之前传递

这是否意味着在循环结束后 - 它可以再次使用?

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

0 个答案:

没有答案