JobPlus知识库 IT 软件开发 文章
安卓取消线程延迟执行任务

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


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


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

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



附加代码:





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


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
429人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序