Зачем нужен статический медиаплеер?

#android #static

#Android #статический

Вопрос:

Я вижу во многих местах, что люди используют статический MediaPlayer экземпляр, например, при использовании его во фрагменте или в действии. Я думаю, что одна из причин заключается в том, чтобы убедиться, что на протяжении всего жизненного цикла будет только один активный экземпляр, чтобы, когда им понадобится другой экземпляр, они могли освободить старый медиаплеер, выполнив что-то вроде

 if (sMediaPlayer != null) {
    sMediaPlayer.release()
}
sMediaPlayer = new MediaPlayer.create(...);
sMediaPlayer.setOnCompleteListener(__ -> {
    sMediaPlayer.release();
    sMediaPlayer = null;
}
  

Я прав? Кроме того, есть ли другие причины использования static экземпляра MediaPlayer?
Спасибо

Комментарии:

1. Это может привести к утечке памяти. Вы можете использовать статический медиаплеер, если используете в том же контексте. Если вам нужно создать новый экземпляр, вы должны выпустить предыдущий экземпляр MediaPlayer

2. @Beyazid Я обновил исходный код. В основном этот код выполняется в статическом методе в сервисе, и я всегда освобождаю и аннулирую его после воспроизведения. Если я использую локальную переменную вместо static var, я не смогу освободить и аннулировать ее, onCompleteListener потому что экземпляр MediaPlayer должен быть final . Как я могу использовать его в статическом методе без использования статического var?

3. Я думаю, что нет смысла использовать медиаплеер как статический в Activity / Fragment, оба имеют определенный жизненный цикл Android для инициализации и так далее, Чтобы иметь уникальный общий экземпляр MediaPlayer, его можно поместить в Service, ViewModel или в Singleton