我想在Android上发送事件,就像在.net上实现事件一样。
例如=> class1包含一个计时器,每10秒他将事件发送到所有其他类(class2& class3),时间到达他的超时。
如何用android做到这一点?
public final class Class1 {
private CountDownTimer _countDownTimer;
public void startTimer(){
_countDownTimer = new CountDownTimer(10000, 100)
{
@Override
public void onTick(long millisUntilFinished) {
doSomthig();
// ****************************************
// HERE SEND EVENT THAT OUT_OF_TIME_TIMER
// ****************************************
}
@Override
public void onFinish() {
}
};
_countDownTimer.start();
}
答案 0 :(得分:1)
我建议你创建一个公共接口并扩展所有类,然后扩展你想要定时器类的Class,并保存一个实现公共监听器的另一个类的List,并在一段时间后循环列表和调用接口方法
示例:
<script src="jquery.min.js"></script>
答案 1 :(得分:0)
您可以使用总线库(EventBus或Otto)来实现这一目标。
你也可以自己使用回调来实现它 -
public final class Class1 {
interface TimerListener {
void onOutOfTime();
}
public Class1() {
listeners = new ArrayList<TimerListener>();
}
public void addListener(TimerListener listener) {
listeners.add(listener);
}
private CountDownTimer _countDownTimer;
List<TimerListener> listeners;
public void startTimer() {
_countDownTimer = new CountDownTimer(10000, 100) {
@Override
public void onTick(long millisUntilFinished) {
doSomthig();
for(TimerListener listener:listeners)
listener.onOutOfTime();
}
@Override
public void onFinish() {
}
};
_countDownTimer.start();
}
}
然后在Class2和Class3中,实现接口TimerListener
-
public class Class2 implements TimePicker.OnTimeChangedListener{
@Override
public void onOutOfTime() {
doSomething();
}
}
然后,您可以使用这样的实现 -
Class1 class1 = new Class1();
Class2 class2 = new Class2();
class1.addTimerListener(class2);
class1.addTimerListener(new Class1.TimerListener() {
@Override
public void onOutOfTime() {
doSomething();
}
});
答案 2 :(得分:-1)
我会坚持你去EventBus,这是松散耦合的发布者/订阅者模式的非常好的概念。它只需几行代码即可实现与分离类的集中通信 - 简化代码,消除依赖关系,并加快应用程序开发。
此外,还有非常好的features of EventBus,明确表明其用途。