在我的应用程序中,我有一个播放音频的服务,该服务只有一个静态MediaPlayer
对象。在我的主要活动的onStart()
中,我致电MediaPlayer.isPlaying();
以确定要显示哪些UI元素,我会在我调用NullPointerException
<的行处收到ANR消息和MediaPlayer.isPlaying();
/ p>
当按下某些按钮时,我也会调用MediaPLayer.isPlaying();
,这也会导致ANR,我发现在我MediaPlayer.isPlaying();
之后取消了onStart();
来电,因为我不能没有ANR就过去了......
我发现了类似的问题:MediaPlayer isPlaying() always returning false
当有人说:“另外,当我们使用一般的MediaPlayer主题时,请注意isPlaying()在UI线程上调用时会导致ANR。事实上,Google建议从后台处理程序线程执行所有MediaPlayer调用这也将序列化MediaPlayer调用的执行。“
我在文档中找不到任何相关内容。那么在这些场景中如何创建短期线程的最佳方法是什么?这样我能够检查MediaPlayer
的状态?或者还有另一种方式吗?