安卓取消线程延迟执行任务

作者: 不靠谱陛下 | 来源:发表于2017-04-18 20:03 被阅读77次

    问题场景如下:我在播放一段MP3的时候,现需要在播放30秒后自动停止,于是乎我开启了一个延迟任务线程(没代码说个毛线),代码如下:                                                                                                                                   

    没毛病,30秒后MP3停止播放。有这么样一个情况:我在10秒的时候又开启了一个上面一模一样的线程去播放另一个MP3(mPlayer是单例的!mPlayer是单例的!mPlayer是单例的!),代码如下:

    那么问题来了,当播放到20秒左右的时候就停止播放了。坑爹啊,明明设置的是30秒啊!现在看问题很简单了,就是因为播放第一条MP3的时候开启的线程还在运行,mPlayer又是单例设计的,所以当你10秒后播放第二条MP3时 ,第一个延迟线程生效了!  

    既然知道原因了,解决问题就很简单了,当播放第二个MP3的时候直接取消延迟线程,废话少说直接上代码:

    附加代码:

    总结:取消线程任务延迟,就一行代码:  mainHandler.removeCallbacks(mRunnable) 

    肯定还有其它的方法,欢迎讨论交流!

    相关文章

      网友评论

        本文标题:安卓取消线程延迟执行任务

        本文链接:https://www.haomeiwen.com/subject/mrsqzttx.html