【发布时间】:2012-09-17 09:53:46
【问题描述】:
我在当前正在开发的应用程序中使用 MediaPlayer 类。我想在 Activity 的整个生命周期中保留 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();
}
在 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();
感谢任何建议,
谢谢,
【问题讨论】:
-
您能否在 onCreate/onResume/onPause 等中包含您对媒体播放器所做的相关代码 sn-ps? “释放资源”的解释可能有些含糊。
-
@Tim Hi Tim,我已经在问题中添加了一些代码,谢谢!
标签: android android-mediaplayer