管理状态
对MediaPlayer要记住的另一个方面就是"基于状态".即,MediaPlayer有一个内部的状态,因为特定的操作只能在特定的状态时才有效,所以你必须在写代码时一直注意到它的变化.如果你在错误的状态下执行一个操作,系统可能抛出一个异常或导致一个意外的行为.
MediaPlayer类文档中展示了一个完整的状态图例,它阐明了哪个方法使MediaPlayer从一个状态进入另一个状态.例如,当你创建一个新的MediaPlayer,它处于Idle状态.此时,你应调用setDataSource()初始化它,使它进入"已初始化"状态.之后,你应使用prepare()或prepareAsync()"准备"它.当MediaPlayer准备完成,它将进入Prepared状态,这表示你可以调用start()来播放了.此时,如图表所示,你可以调用start(),pause(),和seekTo()以及其它一些方法使MediaPlayer的状态在Started,Paused和PlaybackCompleted状态之间转换.当你调了stop(),注意你不能再调用start(),除非你重新prepare MediaPlayer.
当你写代码与MediaPlayer交互时,要时刻记住MediaPlayer的状态变化图,因为在错误的状态下调用它的方法是常见的bug的原因.
对MediaPlayer要记住的另一个方面就是"基于状态".即,MediaPlayer有一个内部的状态,因为特定的操作只能在特定的状态时才有效,所以你必须在写代码时一直注意到它的变化.如果你在错误的状态下执行一个操作,系统可能抛出一个异常或导致一个意外的行为.
MediaPlayer类文档中展示了一个完整的状态图例,它阐明了哪个方法使MediaPlayer从一个状态进入另一个状态.例如,当你创建一个新的MediaPlayer,它处于Idle状态.此时,你应调用setDataSource()初始化它,使它进入"已初始化"状态.之后,你应使用prepare()或prepareAsync()"准备"它.当MediaPlayer准备完成,它将进入Prepared状态,这表示你可以调用start()来播放了.此时,如图表所示,你可以调用start(),pause(),和seekTo()以及其它一些方法使MediaPlayer的状态在Started,Paused和PlaybackCompleted状态之间转换.当你调了stop(),注意你不能再调用start(),除非你重新prepare MediaPlayer.
当你写代码与MediaPlayer交互时,要时刻记住MediaPlayer的状态变化图,因为在错误的状态下调用它的方法是常见的bug的原因.
本文详细介绍了Android MediaPlayer类的状态管理机制,包括各个状态之间的转换流程及如何正确地调用相应的方法。理解这些状态对于避免常见错误至关重要。
345

被折叠的 条评论
为什么被折叠?



