В общем, я создаю игру на SurfaceView, и у меня есть эти классы в моем основном CustomView:
private TitleScreen titleScreen;
private GameScreen gameScreen;
private PauseScreen pauseScreen;
private GameOverScreen gameOverScreen;
Каждый из этих классов имеет метод draw(Canvas canvas)
и вызывается, когда пользователь переходит на другой экран. Но дело в том, что у меня есть класс SoundPlayer
, который включает все мои звуковые эффекты с использованием SoundPool. Он будет использоваться во всех этих классах. Есть ли способ, которым SoundPlayer загружается только один раз, а затем доступен во всех этих классах? Или мне нужно вызывать release()
и вызывать конструктор каждый раз, когда я переключаюсь? Заранее спасибо. :D
ОБНОВЛЕНИЕ (РЕШЕНО):
Итак, вот что я сделал. Я создал экземпляр своего класса SoundPlayer:
public class SoundPlayerInstance {
private static SoundPlayer soundPlayerInstance;
private SoundPlayerInstance(){}
public static void createInstance(Context context){
soundPlayerInstance = new SoundPlayer(context);
}
public static SoundPlayer getInstance(){
return soundPlayerInstance;
}
}
В моем основном представлении, прежде чем что-либо делать, я вызываю это в своем конструкторе:
SoundPlayerInstance.createInstance();
Затем в любом из моих классов я могу просто вызвать его для воспроизведения звука:
SoundPlayerInstance.getInstance().playSound();
Я думаю, что это будет полезно не только для подобных ситуаций, но также может быть полезно для разработчиков (таких как я), которые хотят создать экземпляр класса, доступного во всех других классах. Спасибо system32 за ответ на мой вопрос. :)