
很多代码/工作. @H_502_2@我认为另一种选择是在MyElassClass和MyClass中的接收器中使用广播,但我不确定,可能是过度使用,接收器也要注册(并且在onStop()上未注册) @H_502_2@第三种选择是为MyClass类定义监听器实现,而不是为每个实例定义,这将完全适合,但我不知道它是否可行,我如何编写它. @H_502_2@我刚刚提出的第四个选项是在MyClass的父类上实现监听器,只在MyEventClass中设置这个监听器,然后在事件发生循环中通过所有MyClass实例并手动调用它们的监听器.这节省了我使用MyEventClass注册每个实例.解决方法 StinePike是正确的,这是编码时遇到的一个非常标准的问题. Observer(或 Java talk中的监听器)模式是此标准实践解决方案.你应该使用你的第一个命题,你的措辞有点不清楚,所以如果我不太清楚的话,我会把它给你. @H_502_2@让MyEventClass提供一个Listener接口,比如MyEventClassListener,以及添加/删除方法.然后MyClass可以作为听众附加/分离自己.这是一个代码示例,以备您需要时: @H_502_2@MyEventClass.java
public class MyEventClass { private Set<MyEventClassListener> Listeners = new HashSet<MyEventClassListener>(); // Your code here... public voID addListener(MyEventClassListener Listener) { Listeners.add(Listener); } public voID removeListener(MyEventClassListener Listener) { Listeners.remove(Listener); } public voID notifyListeners() { for (MyEventClassListener Listener : Listeners) { Listener.somethingHappened(); } }} @H_502_2@MyEventClassListener.java public interface MyEventClassListener { public voID somethingHappened();} @H_502_2@MyClass.java public class MyClass implements MyEventClassListener { MyEventClass myEventClass; // Your code here.. public voID someFunction() { // Add as Listener myEventClass.addListener(this); } @OverrIDe public voID somethingHappened() { // Act on callback }} 总结 以上是内存溢出为你收集整理的android – 为Class而不是实例实现一个监听器全部内容,希望文章能够帮你解决android – 为Class而不是实例实现一个监听器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)