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

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

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

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

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

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

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

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

附加代码:

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

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

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

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

    原文作者:上帝掷骰子吗
    原文地址: https://www.jianshu.com/p/324c4be4b4f2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞