android – 推迟onEvent的最佳方法?

前端之家收集整理的这篇文章主要介绍了android – 推迟onEvent的最佳方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的小应用程序中,我从系统(不受我控制)收到一系列排队的onEventXXX().

那些onEventXXX()的时间不保证.唯一保证的是它们按照它们被放入队列的顺序被接收.

在onEventXXX()中,我必须触发一个操作(O),当另一个进程(P)进行时,该操作无法启动.

但我不能放弃这个“开火行动(O)”.我必须等到那个过程(P)完成,然后解雇它.

IOW,我必须排队或至少推迟“触发操作”直到该过程(P)完成.

我实现这一点的直接想法是,不是解雇操作(O),而是:

>启动一次定时器,定期检查过程(P)
>当计时器过去时,如果过程(P)未完成,则再次开始时间(自身).
>当计时器过去时,如果过程(P)完成,则触发操作(O).

但是,知道Android的丰富性,我怀疑有一种更好的方法,已经内置到系统/ API中.

如果有更好的方法来实现上述目标,它会是什么?

解决方法

CountDownLatch将是最好的解决方案.

我没有详细的例子,但我认为你可以轻松使用它.

流程如下

>定义CountDownLatch可变命名的latch
>将锁存计数设置为1
>当收到事件O时,制作一个新的ThreadO.在ThreadO中,等待锁存器的计数达到0.
>当进程P完成时,倒计时锁存.

如果您这样编码,您可以轻松处理许多情况.

>如果O先收到,你可以等到P完成.
>如果P先收到,你可以马上开始.
>您可以使用CountDownLatch提供的超时功能.

我在asyc单元测试中使用CountDownLatch.你可以在这里看到我的代码http://kingori.egloos.com/4554640

虽然它不像你的情况,但你可以从我的代码获取提示.此外,CountDownLatch的javadoc提供了很好的示例.

猜你在找的Android相关文章