android – 推迟onEvent的最佳方法?

android – 推迟onEvent的最佳方法?,第1张

概述在我的小应用程序中,我从系统(不受我控制)收到一系列排队的onEventXXX(). 那些onEventXXX()的时间不保证.唯一保证的是它们按照它们被放入队列的顺序被接收. 在onEventXXX()中,我必须触发一个 *** 作(O),当另一个进程(P)进行时,该 *** 作无法启动. 但我不能放弃这个“开火行动(O)”.我必须等到那个过程(P)完成,然后解雇它. IOW,我必须排队或至少推迟“触发 *** 作”直 在我的小应用程序中,我从系统(不受我控制)收到一系列排队的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 – 推迟onEvent的最佳方法?全部内容,希望文章能够帮你解决android – 推迟onEvent的最佳方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1145259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存