为每个处理程序/计时器/线程执行运行不同的代码

时间:2017-02-05 03:28:11

标签: java android multithreading handler

我知道如何使用Handler或Timer / Thread等。您可以调用处理程序,并在代码中需要的地方启动/停止它。通常,处理程序会反复运行某个代码,直到它停止为止。我想知道是否有办法为每次执行运行不同的代码。我想到的一种方法是做如下的工作。

Handler h = new Handler();
int delay = 1000; //milliseconds
int handlerCount = 0;

h.postDelayed(new Runnable(){
    public void run(){
        //update handler count
        handlerCount = handlerCount + 1;
        if (handlerCount ==1 ) {
            //run code 1  
        } 
        if (handlerCount ==2) {
            //run code 2
        } // etc.
        h.postDelayed(this, delay);
    }
}, delay);

或者,如果您需要每隔一段时间执行不同的代码,您可以

if (handlerCount%2 == 0) {
    //Do first function
} else {// do second function}

这是最好的方法吗?它似乎不是很干净,但它工作正常,所以我想知道是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

你可以这样做

Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case case1:
                //ops for case1
                break;
        }
    }
};

然后向Handler发送消息,请使用以下代码

handler.obtainMessage(what, arg1, arg2, dataobj)
//what - integer to identify this message
//arg1 - optional integer argument1
//arg1 - optional integer argument2
//dataobject - optional data object to be passed