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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...