現在作業中のアプリで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();
}
そして、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();
アドバイスに感謝します、
ありがとう、