我有一个类可以加载多个声音来创建音效库。我使用 soundPool 的 setOnLoadCompleteListener 来监听正在加载的每个声音。在加载每个声音时,我会计算声音,当它们全部加载时,我想将其传达给主 Activity,以便它可以进入下一步。
问题 如何使用本地广播管理器描述了如何在活动之间进行广播非常好。但是,由于我只想在一个类和包含它的活动之间进行广播,所以在这种情况下使用 LocalBroadcastManager 是不是有点矫枉过正?
我有一个类可以加载多个声音来创建音效库。我使用 soundPool 的 setOnLoadCompleteListener 来监听正在加载的每个声音。在加载每个声音时,我会计算声音,当它们全部加载时,我想将其传达给主 Activity,以便它可以进入下一步。
问题 如何使用本地广播管理器描述了如何在活动之间进行广播非常好。但是,由于我只想在一个类和包含它的活动之间进行广播,所以在这种情况下使用 LocalBroadcastManager 是不是有点矫枉过正?
是的,这太过分了。您不需要为此进行广播。如果您的活动正在实现 OnLoadCompleteListener,那么您可以在加载所有声音时简单地在活动中调用一个方法。如果您正在创建一个实现 OnLoadCompleteListener 的对象,那么您可以为您的活动的侦听器的构造函数创建一个参数。加载所有声音后,您将获得一个指向您的活动的指针,并且可以通过这种方式调用它的方法。
你可以试试Otto或Green Robot
尝试使用监听器。我之前没有使用过 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