如何将事件从class1发送到class2和class3?

时间:2016-09-29 05:23:35

标签: android

我想在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();
}

3 个答案:

答案 0 :(得分:1)

我建议你创建一个公共接口并扩展所有类,然后扩展你想要定时器类的Class,并保存一个实现公共监听器的另一个类的List,并在一段时间后循环列表和调用接口方法

示例:

   <script src="jquery.min.js"></script>

答案 1 :(得分:0)

您可以使用总线库(EventBusOtto)来实现这一目标。

你也可以自己使用回调来实现它 -

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,明确表明其用途。