检查Android MediaPlayer是否已初始化
如何检查检查Android MediaPlayer是否已初始化,android,initialization,android-mediaplayer,Android,Initialization,Android Mediaplayer,如何检查MediaPlayer对象是否已初始化?是否有类似于: MediaPlayer mp; if(mp.isInitialized()) Log.v("Test", "mp has been initialized. :D "); else Log.v("Test", "mp is NOT yet initialized. :( "); 当然,我查看了API文档,没有这样的方法,但是有类似的方法吗 我正在考虑检查我的代码,只要捕捉抛出的异常(如果它触发的话),但我发现这是不
MediaPlayer
对象是否已初始化?是否有类似于:
MediaPlayer mp;
if(mp.isInitialized())
Log.v("Test", "mp has been initialized. :D ");
else
Log.v("Test", "mp is NOT yet initialized. :( ");
当然,我查看了API文档,没有这样的方法,但是有类似的方法吗
我正在考虑检查我的代码,只要捕捉抛出的异常(如果它触发的话),但我发现这是不合法的P
编辑:
我的代码是这样编写的:
MediaPlayer mp;
// Lorem ipsum dolor sit amet consectetur adipisicing...
if(mp.isInitialized)
{
mp.stop();
}
两种可能的想法:
isPlaying()
方法代替所需的isInitialized()
?如果它确实在播放某些东西,难道你不想只调用mp.stop()
当一个方法声明它抛出异常时,当您使用该方法时,您有两个选项。使用
throws
关键字声明您的方法也抛出异常(可以说是推卸责任),或者catch
抛出异常。你必须做其中一件事
即使文档中包含一个isInitialized()
方法,如果这些方法仍然抛出IllegalStateException
s,您仍然必须通过这两个方法之一来处理它们
此外,抓取是优雅的,它允许你的应用程序不会崩溃(崩溃不是优雅的),并让你知道有什么不对劲。如果您有很多媒体播放器调用(例如在同一方法中一个接一个地调用),您可以将它们全部放在一个
try/catch
块下。在媒体播放器方法调用周围使用try-and-catch,如果抛出了IllegalStateException,则不会初始化它
try {
mediaPlayer.isPlaying();
} catch(IllegalStateException e) {
// media player is not initialized
}
如果抛出的
异常被声明为由该方法抛出,您不需要捕获它吗?您好,@A--C。请查看我的编辑。我的代码本来打算这样做的。我想我可以通过这种方式避免异常。不,我的意思是,stop()
抛出异常IllegalStateException
,所以你要么捕获异常,要么声明抛出异常的方法(通过抛出)。所以,没有办法检查它是否初始化,而且你最好还是捕获异常。哦,明白了,我明白你的意思。请提供答案,以便我能接受。谢谢,@A--C!:德洛,本·雅库本。根据API文档,isplay()
如果内部播放器引擎尚未初始化或已释放,也会调用IllegalStateException
。这就是我不考虑的原因。