如何检查MediaPlayer
对象是否已初始化?有没有像:
MediaPlayer mp;
if(mp.isInitialized())
Log.v("Test", "mp has been initialized. :D ");
else
Log.v("Test", "mp is NOT yet initialized. :( ");
当然,我检查了API文档并且没有这样的方法,但有类似的方法吗?
我正在考虑只是通过我的代码并抓住抛出的Exception
如果它曾经触发,但我发现它不那么优雅。 :P
修改
我的代码打算像这样:
MediaPlayer mp;
// Lorem ipsum dolor sit amet consectetur adipisicing...
if(mp.isInitialized)
{
mp.stop();
}
答案 0 :(得分:4)
当方法声明它抛出异常时,当您使用该方法时,您有两个选项。声明你的方法也可以使用throws
关键字或catch
异常来抛出异常(通过降低可能性)。你必须做其中一件事。
即使文档包含isInitialized()
方法,如果方法仍在抛出IllegalStateException
,您仍必须通过这两种方法之一处理它们。
此外,捕捉 优雅,它可以让你的应用程序不崩溃(崩溃不优雅),让你知道出了什么问题。如果您有很多媒体播放器调用(例如在同一方法中一个接一个),您可以将它们全部放在一个try/catch
块下。
答案 1 :(得分:1)
两种可能的想法:
根据您的“预期”代码,为什么不能使用isPlaying()
方法代替所需的isInitialized()
?你是否只想打电话给mp.stop()
,如果它真的在玩什么?
如何将mp.stop()或其他内容放入OnPreparedListener?
答案 2 :(得分:0)
使用try并捕获mediaPlayer方法调用,如果抛出IllegalStateException则不会初始化
try{
mediaPlayer.isPlaying()
}catch(IllegalStateException e){
//media player is not initialized
}