Dev*_*eva 5 multithreading android handler
我在主ui线程(mUIHandler)和工作线程(其他线程)中创建了一个Handler实例,当我尝试执行runnable的run方法时,run方法几乎被执行了10次,但是有那个1次没有被执行.
mUIHandler.post(uiRunnable) - >它是否总能保证执行runnable中的run方法?
我甚至添加了日志方法来检查,并且可以看到日志直到post方法innvocation被执行但是run方法日志没有显示.
帖子(可运行)如何在内部工作?是否保证ui线程(带有处理程序的线程)会在调用post后立即执行此操作?
任何帮助,将不胜感激.
谢谢!
小智 11
我在Android 2.2上也遇到过这个问题,在我的例子中,Runnables和Messages都与同一个Handler一起使用.
查看Handler源代码后,发现删除"what"值为0的消息也会删除所有排队的Runnables.发生这种情况是因为在Handler类中,Runnable在内部发布为"what"值为零的消息,这些消息都被任何调用删除removeMessages(0).因此,请避免将零用作消息ID.
我从未见过Handler没有正确运行发布的runnable.要调查的一些事情:
我的投票(没有看到你的代码)是它可能是#1.由于并发逻辑,你不会成为第一个成为难以追踪的竞争条件的受害者.
| 归档时间: |
|
| 查看次数: |
7517 次 |
| 最近记录: |