Java 在没有ANR的情况下调用MediaPlayer.isPlaying()的正确方法?

Java 在没有ANR的情况下调用MediaPlayer.isPlaying()的正确方法?,java,android,Java,Android,在我的应用程序中,我有一个播放音频的服务,该服务只有一个静态MediaPlayer对象。在我调用MediaPlayer.isPlaying()的主要活动中的onStart()为了确定要显示哪些UI元素,我在调用MediaPlayer.isPlaying()的行中得到一条ANR消息和一个NullPointerException 我还调用MediaPLayer.isPlaying()当某些按钮被按下时,这也会导致ANR,我发现在我拿走了MediaPlayer.isplay()之后调用onStart(

在我的应用程序中,我有一个播放音频的服务,该服务只有一个静态
MediaPlayer
对象。在我调用
MediaPlayer.isPlaying()的主要活动中的
onStart()
为了确定要显示哪些UI元素,我在调用
MediaPlayer.isPlaying()的行中得到一条ANR消息和一个
NullPointerException

我还调用
MediaPLayer.isPlaying()当某些按钮被按下时,这也会导致ANR,我发现在我拿走了
MediaPlayer.isplay()之后调用
onStart(),因为我无法在没有ANR的情况下通过它

我发现了类似的问题:

有人说:“另外,当我们讨论一般的MediaPlayer主题时,请注意,当在UI线程上调用isplay()时,可能会导致ANR。事实上,Google建议从后台处理程序线程执行所有MediaPlayer调用。这也将序列化MediaPlayer调用的执行。”


我在文档中找不到任何与此相关的内容。那么,在这些场景中,我如何创建一个短命线程,或者什么是创建短命线程的最佳方法,以便能够检查我的
MediaPlayer
的状态呢?或者有其他方法吗?

发布一些相关代码,logcat错误将有助于解决问题,正如另一篇文章的答案所示。根据他的建议,你可以使用你自己的ISPLAYFLAG。我明白了,你的意思是当我的音乐实际播放时,我手动将布尔值设置为true,当它停止时设置为false,等等?因为我试着使用基于MediaPlayer.isplay()的标志,结果也崩溃了。。。