Andriod 媒体app 改造 笔记(非公开)

自己的踩坑笔记,对外人没用,不要浪费时间

1、因为setNextPlayer报错了,引发了onCompletion(而onCompletion中将 mCurrentMediaPlayer释放了,mNextMediaPlayer也被置为null了!)

      然后发送了消息去播放下一首,导致下载了所有歌曲(会循环这个异常)

      这个坑很久没找到,最好在player的onError和onCompletion上都加上日志(至少有2个错,都是因为它们走到这里来了,而且可能会导致客户端异常,一直下载歌曲【因此onerror里最好一直返回true,因onCompletion里会发送放下一首的消息出去】)

 

2、测试:onError最终返回true之后,正常播放完本歌曲,会进入onCompletion吗?

     没有问题,正常播放完歌曲,不会进入onError。切换歌曲,也不会进入onError(当然也没有进入onCompletion【因为没有播放完嘛】)

 

[todo]3、暂停后重新播放,会触发play(),继而触发setNextTrack

     这个处理逻辑可能会引起问题(在处理网络歌曲时,因为会导致重新prepare,之前那首可能还在下载,会导致nextPlayer release并重设)

 

[todo]4、切歌曲到下一首时,从setNextTrack: next play position = 3开始,后续的代码被执行了2次

     切下一首会触发gotoNext,这个函数会依次调用:

     1 -> openCurrentAndMaybeNext(true) -> setNextTrack() 

     2 -> play(true) -> setNextTrack()

    最终导致setNextTrack中执行两次(nextPlayer会release,如果是网络歌曲,会引起Broken pipe),而且代码这段代码重复执行,有什么好处?

posted @   流失的痕迹  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
历史上的今天:
2012-07-08 select、radio、checkbox 与 JQuery
点击右上角即可分享
微信分享提示