Android: MediaPlayer został sfinalizowany bez wydania

Używam klasy MediaPlayer w aplikacji, nad którą obecnie pracuję. Chcę zachować instancję klasy MediaPlayer przez cały okres mojej aktywności. Zwalniam zasoby z klasy MediaPlayer w metodzie aktywności onPause () {}, jednak po rozpoczęciu aktywności widzę następujące ostrzeżenie w oknie LogCat:

W/MediaPlayer-JNI(16795): MediaPlayer finalized without being released

Jakiś pomysł, co robię źle tutaj lub jak usunąć to ostrzeżenie? Wydaje się, że nie powoduje żadnych problemów, a dźwięk działa dobrze.

Mam trochę za dużo kodu do opublikowania, ponieważ zapakowałem kilka obiektów, aby umożliwić zarządzanie stanem (klasa MediaPlayer obecnie nie dostarcza informacji o stanie), a także różne inne powody, ale kod jest całkiem:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    initialiseSounds(this);
}

@Override
protected void onPause()
{
    soundManager.releaseResources();
}

@Override
protected void onResume()
{
    initialiseSounds(this);
}

Ta metoda w mojej klasie SoundManager:

public void releaseResources()
{
    player.release();
}

A w InitiseSounds robię:

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

Kiedy chcę zagrać na ścieżce, którą wykonuję:

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

Doceń każdą radę,

Dzięki,

questionAnswers(3)

yourAnswerToTheQuestion