2014-05-20 6 views
1

사운드 효과 라이브러리를 만들기 위해 여러 사운드를로드하는 클래스가 있습니다. soundPool의 setOnLoadCompleteListener를 사용하여로드되는 각 사운드를 수신합니다. 각각의 사운드가로드 될 때 나는 사운드를 세고 모든 사운드가로드되면이를 메인 액티비티에 알려서 다음 단계로 넘어갈 수 있습니다.클래스와 활동 사이의 통신 방법은 무엇입니까?

질문과 대답 How to use a local broadcast manager은 활동 간의 실제 방송 방법을 설명합니다. 그러나 클래스와 그 클래스가 포함 된 활동 사이에서만 브로드 캐스트하려는 경우이 상황에서 LocalBroadcastManager를 과도하게 사용하고 있습니까?

+0

** "클래스와이를 포함하는 활동 사이"** "해당 활동이 포함 된 활동"이란 무엇을 의미합니까? 그것은 '활동'의 내부 클래스입니까? – Squonk

답변

0

예는 잔인한 시도 할 수 있습니다. 이를 위해 방송이 필요하지 않습니다. 만약 당신의 액티비티가 OnLoadCompleteListener를 구현하고 있다면, 당신은 모든 사운드가로드되었을 때 당신의 액티비티 내에서 간단하게 메서드를 호출 할 수 있습니다. OnLoadCompleteListener를 구현하는 객체를 만드는 경우에는 사용자 활동에 대한 리스너의 생성자에 대한 인수를 만들 수 있습니다. 모든 사운드가로드되면 액티비티에 대한 포인터가 생기고 그렇게 소리를 낼 수 있습니다.

0

리스너를 사용해보십시오. 필자는 전에 SoundPool을 사용하지 않았지만 리스너를 사용하고 구현하는 일반적인 방법은 다음과 같습니다.

public interface ThisIsMyListener { 
    public void triggerListener(); 
} 

public class ThisIsMyClass { 
    private ThisIsMyListener lis; 

    public ThisIsMyClass(ThisIsMyListener listener) { 
     lis = listener; 
    } 

    private void triggerListener() { 
     lis.triggerListener(); 
    } 
} 

사용자 활동은 수신기를 구현해야합니다.

public class MyActivity extends Activity implements ThisIsMyListener