MediaPlayer 상태 및 리소스 관리

이 문서에서는 잠재적인 함정이 있는 두 가지 영역을 다룹니다.

  • 상태. 'Medialayer'를 사용하면 특정 작업은 특정 상태에서만 유효합니다. 잘못된 작업으로 인해 예외나 예기치 않은 동작이 발생할 수 있습니다.

  • 리소스 화면 회전과 같은 구성을 변경할 때는 MediaPlayer 객체를 해제하여 시스템 리소스를 확보하고 리소스 소모를 방지해야 합니다.

상태 관리

MediaPlayer는 상태 기반입니다. 즉, 에는 코드를 작성할 때 항상 알고 있어야 하는 내부 상태가 있습니다. 특정 작업은 플레이어가 특정 상태에 있을 때만 유효하기 때문입니다. 잘못된 상태에서 작업을 실행하면 시스템에서 예외나 다른 바람직하지 않은 동작이 발생할 수 있습니다.

MediaPlayer 클래스 문서의 상태 다이어그램은 어떤 메서드가 MediaPlayer를 한 상태에서 다른 상태로 이동하는지 명확히 보여줍니다. 예를 들면 다음과 같습니다.

  • MediaPlayer를 만들면 유휴 상태가 됩니다.
  • setDataSource()를 호출하여 초기화하면 초기화됨 상태로 변경됩니다.
  • prepare() 또는 prepareAsync() 메서드를 사용하여 준비합니다.
  • MediaPlayer의 준비가 완료되면 Prepared 상태로 전환됩니다. 즉, start()를 호출하여 미디어를 재생할 수 있습니다.

이 시점에서 다이어그램과 같이 start(), pause(), seekTo()와 같은 메서드를 호출하여 Started, Paused, PlaybackCompleted 상태 사이를 이동할 수 있습니다.

그러나 stop()를 호출하면 MediaPlayer를 다시 준비할 때까지 start()를 다시 호출할 수 없습니다.

MediaPlayer 객체와 상호작용하는 코드를 작성할 때는 항상 상태 다이어그램을 기억하세요. 잘못된 상태에서 메서드를 호출하는 것이 버그가 발생하는 일반적인 원인이기 때문입니다.

MediaPlayer 해제

MediaPlayer는 귀중한 시스템 리소스를 소비할 수 있습니다. 따라서 항상 특히 주의를 기울여 필요 이상으로 오래 MediaPlayer 인스턴스를 유지하지 않는지 확인해야 합니다. 작업이 끝나면 항상 release()를 호출하여 할당된 시스템 리소스가 올바르게 해제되었는지 확인해야 합니다.

예를 들어 MediaPlayer를 사용 중이고 활동이 onStop() 호출을 수신하는 경우 MediaPlayer를 해제해야 합니다. 활동이 사용자와 상호작용하지 않는 동안 MediaPlayer를 유지하는 것은 거의 의미가 없기 때문입니다 (다음 섹션에서 설명하는 백그라운드에서 미디어를 재생하는 경우는 예외).

물론 활동이 재개되거나 다시 시작되면 새로운 MediaPlayer를 만들고 준비한 후 재생을 다시 시작해야 합니다.

다음은 MediaPlayer를 해제한 다음 무효화하는 방법입니다.

Kotlin

mediaPlayer?.release()
mediaPlayer = null

자바

mediaPlayer.release();
mediaPlayer = null;

예를 들어 활동이 중지될 때 MediaPlayer를 해제하지 않고 활동이 다시 시작될 때 새 MediaPlayer를 만든 경우 발생할 수 있는 문제를 생각해 보세요. 사용자가 화면 방향을 변경하거나 다른 방식으로 기기 구성을 변경하면 시스템은 기본적으로 활동을 다시 시작합니다. 사용자가 기기를 세로 모드와 가로 모드 간에 앞뒤로 회전할 때 모든 시스템 리소스가 빠르게 소모될 수 있습니다. 방향이 변경될 때마다 해제하지 않는 새 MediaPlayer를 만들기 때문입니다.

런타임 다시 시작에 관한 자세한 내용은 런타임 변경 처리를 참고하세요.

사용자가 활동을 떠날 때에도 내장된 음악 애플리케이션이 동작하는 것과 동일한 방식으로 '백그라운드 미디어'를 계속 재생하려는 경우 어떤 일이 발생하는지 궁금할 수 있습니다. 이 경우 필요한 것은 서비스에서 제어하는 MediaPlayer입니다. 다음 섹션에서 설명합니다.

자세히 알아보기

Jetpack Media3는 앱에서 미디어를 재생하는 데 권장되는 솔루션입니다. 자세한 내용은 자세히 알아보세요.

이 페이지에서는 오디오와 동영상 녹음/녹화, 저장 및 재생과 관련된 주제를 다룹니다.