Android:MediaPlayer未发布完成

前端之家收集整理的这篇文章主要介绍了Android:MediaPlayer未发布完成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用MediaPlayer类在我正在处理的应用程序.我想在我的活动的一生中保持MediaPlayer类的实例.我在活动的onPause(){}方法中从MediaPlayer类中释放资源,但是当活动开始时,我会在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();
}

在初始化我正在做的事情:

MediaPlayer player = new MediaPlayer();
player.reset();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
AssetFileDescriptor assetFileDescriptor = context.getResources().openRawResourceFd(resourceId);
setDataSource(player,assetFileDescriptor);

当我想演奏我做的曲目:

player.prepare();
player.start();

欣赏任何意见,

谢谢,

解决方法

我不完全确定该消息的起源,但请注意,您正在创建两个MediaPlayers:一个在onCreate中,一个在onResume中.

这个消息似乎表明它不喜欢MP被定稿(GC’d)而不被“释放”.它可能是指您在onCreate中创建的第一个mediaPlayer,在您在onResume中重新分配后丢失.

也许错误会消失,如果你只创建一个MediaPlayer而不是两个?

猜你在找的Android相关文章