2012-10-19 3 views
0

나는 android class Service를 확장하는 AudioService라는 서비스를 가지고 있습니다. 또한 내 응용 프로그램에서 5 활동이 있습니다. 내 서비스를 해당 활동 중 3 개에만 어떻게 묶을 수 있습니까?오디오 플레이어에 대한 하나의 서비스에 여러 활동 바인딩하기

내가 관심을 갖는 것은 사용자가 세 가지 활동 중 하나를보고있는 동안 서비스를 실행할 수있는 능력이지만 다른 것이 있으면 서비스가 종료 된 것입니다.

예를 들어, 사용자가 버튼을 클릭하여 해당 활동 중 하나에 들어가서 서비스가 시작된 경우. Mediaplayer 객체는 그 시점에 시작할 수 있습니다. 그들은 다른 탐색 버튼이나 뒤로 버튼을 클릭 할 수 있으며 음악이 중단없이 계속 재생되는 3 가지 활동 중 하나를보고있는 한.

답변

0

공유 원자 변수를 사용하여 서비스와 상태를 통신하십시오. 그러면 음악 재생을 중지하거나 시작할 수 있습니다.

  1. 서비스에서 정적 AtomicBoolean을 선언하고이 부울 값을 설정하거나 가져올 수있는 정적 메서드를 선언하십시오. 음악이 이미 재생중인 경우이를 추적해야합니다. true로 설정하면 음악이 재생됩니다.

  2. 사용자가 활동으로 가져가는 버튼을 클릭하면 해당 활동의 onStart() 메소드를 사용하여이 부울 값을 확인하십시오. false이면 음악이 재생되지 않습니다. 사실로 설정하십시오. true로 설정하는 메서드는 음악 재생을 시작해야합니다.

  3. 다른 2 개 액티비티의 onStart() 메소드에서 AtomicBoolean 값을 false로 설정하십시오. 이제 서비스의 메서드는 AtomicBoolean을 false로 설정하고 mediaplayer를 해제해야합니다.

백그라운드 서비스 자체가 계속 실행될 수 있습니다. 음악을 다시 시작하려면 미디어 플레이어를 다시 만드십시오.

관련 문제