我正在我当前正在开发的应用程序中使用 MediaPlayer 类。我想在 Activity 的生命周期内保留 MediaPlayer 类的实例。我在 Activity 的 onPause() { } 方法中释放 MediaPlayer 类中的资源,但是当 Activity 启动时,我会在 LogCat 窗口中看到以下弹出警告:
W/MediaPlayer-JNI(16795): MediaPlayer finalized without being released
知道我在这里做错了什么或者如何删除这个警告吗?它似乎不会引起任何问题,而且声音效果也很好。
我要发布的代码有点太多,因为我包装了一些对象以允许管理状态(MediaPlayer 类当前不提供状态信息),以及各种其他原因,但代码相当多:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initialiseSounds(this);
}
@Override
protected void onPause()
{
soundManager.releaseResources();
}
@Override
protected void onResume()
{
initialiseSounds(this);
}
在我的 SoundManager 类中使用此方法:
public void releaseResources()
{
player.release();
}
在initialiseSounds 中我正在做:
MediaPlayer player = new MediaPlayer();
player.reset();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
AssetFileDescriptor assetFileDescriptor = context.getResources().openRawResourceFd(resourceId);
setDataSource(player, assetFileDescriptor);
当我想播放曲目时,我会这样做:
player.prepare();
player.start();
感谢任何建议,
Thanks,