Android: MediaPlayer finalisé sans être libérés

Je suis en utilisant le lecteur multimédia de la classe dans une application que je suis en train de travailler. Je veux une instance de la classe de MediaPlayer pour la durée de vie de mon Activité. Je suis en libérant les ressources à partir de la classe de MediaPlayer dans le onPause() { } la méthode de l'activité, toutefois, lorsque l'activité commence, je vois le message d'avertissement suivant apparaîtra dans le LogCat fenêtre:

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

Une idée de ce que je fais mal ici ou comment faire pour supprimer cet avertissement? Il ne semble pas causer de problème, et le son fonctionne très bien.

J'ai un peu trop de code pour poster parce que j'ai enveloppé quelques objets à autoriser l'état à gérer (le lecteur multimédia de la classe ne dispose pas actuellement de fournir des informations d'état), et pour diverses autres raisons, mais le code est assez bien:

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

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

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

Avec cette méthode dans mon SoundManager classe:

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

Et dans initialiseSounds je suis en train de faire:

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

Quand je veux jouer le morceau que j'ai à faire:

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

Apprécie tous les conseils,

Merci,

  • Pouvez-vous comprendre les extraits de code de ce que vous faites pour lecteur multimédia dans le onCreate/onResume/onPause, etc? "en libérant les ressources" pourrait être interprétée de manière assez ambiguë.
  • Salut Tim, j'ai ajouté un peu de code pour la question, merci!
InformationsquelleAutor magritte | 2012-09-25