微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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而不是两个?

原文地址:https://www.jb51.cc/android/312092.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐