使用AA按顺序运行异步任务?

时间:2016-08-20 21:33:05

标签: android asynchronous android-annotations greenrobot-eventbus-3.0

我正在尝试在单击按钮时运行某些方法,然后转到下一个活动,如下所示:

Clicked Ok button -> func1() -> func2() -> funky() -> move to next activity

我似乎无法理解我该怎样做才能使这种模式发挥作用?

注意: func1,func2,funky是异步的

我已经尝试过EventBus模式,但是这种模式需要每个event一个额外的类我知道这个简单的任务不会那么昂贵

1 个答案:

答案 0 :(得分:2)

按钮点击 - 这是异步的(在某种程度上; onClick内的代码在按钮点击之前不会被调用)。你在这里做什么?您等待直到按下按钮,然后执行任务func1()

func1() - 同样的想法。在任务完成时实现回调,然后执行func2()

冲洗,重复。

伪码:

button.setOnClickListener(
    new OnClickListener() { // This is a callback anonymous class
        public void onClick(View v) {  // Think of this as a callback method
            func1(
                new Func1Callback() { // Callback anonymous class
                    public void onFunc1Complete() { // Callback method
                        func2(
                            // Repeat
                        ); 
                    }
            });
        }
});

显然,这可以重构以删除嵌套,这是EventBus库的好处。